【问题标题】:How to add a calculated column to Access via SQL如何通过 SQL 将计算列添加到 Access
【发布时间】:2015-07-25 12:17:11
【问题描述】:

如何在 SQL 中将计算列添加到 Access 表中?

我知道我可以使用这样的 SQL 添加一列:

ALTER TABLE Clients ADD COLUMN AccountDate TEXT(60)

谢谢, 维托

【问题讨论】:

  • 为什么这个问题被否决了?对我来说似乎是一个公平的问题。

标签: sql ms-access vba ddl


【解决方案1】:

您不能使用 SQL 添加计算列,因为计算字段需要一个表达式并且无法通过 SQL 提供。从技术上讲,计算字段是基本类型 - int、double、text 等。基本类型上方是帮助 Access 进行数学/逻辑运算的表达式。

您可以使用 VBA 创建计算列

-- create a module and let's assume that
-- your table has Field1 integer and Field2 integer
-- we will add field3

Public Sub CreateField()

    Dim DB As DAO.Database
    Dim TableDef As DAO.TableDef
    Dim Fld As DAO.Field2

    Set DB = CurrentDb()
    Set TableDef = DB.TableDefs("Table1")

    Set Fld = TableDef.CreateField("field3", dbDouble)
    Fld.Expression = "[field1] * [field2]"
    TableDef.Fields.Append Fld

    MsgBox "Added"

End Sub

正如 Gordon 和 BJones 所提到的,您可以使用相关计算创建视图或保存查询。

【讨论】:

  • 好点,这是真的。我之前打算使用 ADO 来做这件事,然后就用 DAO 来做。我将编辑答案并删除有关参考的注释。
  • 你是对的!直到现在我才意识到 ADO 或 ADOX 不支持添加计算列。感谢赐教
【解决方案2】:

我认为 MS Access 不支持计算列。相反,您可以创建一个视图:

create view v_clients as
    select c.*, (col1 + col2) as col3
    from clients;

【讨论】:

    【解决方案3】:

    您希望它计算什么?您是否尝试过类似的方法:

    ALTER TABLE Clients 
    ADD COLUMN AccountDate AS (Column1 * Column2);
    

    【讨论】:

    • 我有。我在 SQL Server 上确实是这样工作的,但是在 Access 中,我在“As”部分得到一个语法错误。
    • 我知道您可以将查询保存为表格。也许将具有计算值的查询保存为您可以查看的表是合适的。
    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 2012-06-18
    • 1970-01-01
    相关资源
    最近更新 更多