Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过SQL向Access添加计算列_Sql_Ms Access_Vba_Ddl - Fatal编程技术网

如何通过SQL向Access添加计算列

如何通过SQL向Access添加计算列,sql,ms-access,vba,ddl,Sql,Ms Access,Vba,Ddl,如何在SQL中向Access表添加计算列 我知道我可以添加一个SQL列,如下所示: ALTER TABLE Clients ADD COLUMN AccountDate TEXT(60) 谢谢, Vítor您希望它计算什么?你有没有试过这样的方法: ALTER TABLE Clients ADD COLUMN AccountDate AS (Column1 * Column2); 我认为MS Access不支持计算列。相反,您可以创建一个视图: create view v_clients

如何在SQL中向Access表添加计算列

我知道我可以添加一个SQL列,如下所示:

ALTER TABLE Clients ADD COLUMN AccountDate TEXT(60)
谢谢,
Vítor

您希望它计算什么?你有没有试过这样的方法:

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

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

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

无法使用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所提到的,您可以创建一个视图或保存查询,并进行相关计算。

我有。我在SQL Server上确实是这样工作的,但在Access中,“As”部分出现语法错误。我知道可以将查询另存为表。也许将带有计算值的查询保存为可查看的表比较合适。为什么这个问题被否决?对我来说这是个公平的问题。说得好,没错。我之前打算用ADO来做这件事,然后用DAO来做。我将编辑答案并删除关于参考的注释。你说得对!直到现在我才意识到ADO或ADOX不支持添加计算列。谢谢你的启示