SQL的括号表示法不适用于Microsoft Access

时间:2016-02-17 14:52:36

标签: sql vba ms-access access-vba

我正在使用Microsoft Access应用程序中的VBA中使用的以下SQL语句。

我们的原始代码看起来像这样。

if userTime[-2].upper() not in ("X", "Z"):

我们的问题是我们不希望从DoCmd.RunSQL "INSERT INTO [Standard Data] SELECT * FROM [Task Copy] WHERE [Route Step]='Example Step'" 复制ID。所以我们想做一些像

这样的事情
Standard Data

这也有效,当我们尝试选择一个带有空格的列时会出现问题。 代码

DoCmd.RunSQL "INSERT INTO [Standard Data] SELECT FirstCol,SecondCol FROM [Task Copy] WHERE [Route Step]='Example Step'"

不执行。当我单击触发此代码的按钮时,它永远不会要求我将附加到表中。

我上次陈述的格式化是否有问题?

2 个答案:

答案 0 :(得分:2)

指定目标字段名称。

INSERT INTO [Standard Data] ([Entry Date])
SELECT [Entry Date]
FROM [Task Copy]
WHERE [Route Step]='Example Step'

您确认更改是INSERT工作所需的全部内容。

但是,我建议您使用不同的方法来执行INSERT。这将为您提供比DoCmd.RunSQL ...

更好的反馈
Dim db As DAO.Database
Dim strInsert As String
DoCmd.SetWarnings True
strInsert = "INSERT INTO [Standard Data] ([Entry Date]) " & _
    "SELECT [Entry Date] FROM [Task Copy] WHERE [Route Step]='Example Step'"
Debug.Print strInsert '<- inspect this in Immediate window; Ctrl+g will take you there
Set db = CurrentDb
db.Execute strInsert, dbFailOnError
Debug.Print db.RecordsAffected & " row(s) added"

答案 1 :(得分:0)

尝试此操作,假设您在Access中设置了数据库连接:

INSERT INTO dbo.[Standard Data] [(Entry Date)] SELECT [Entry Date] FROM dbo.[Task Copy]  WHERE dbo.[Task Copy].[Route Step] = 'Example Step';

不确定为什么你的SQL表中有空格,我会重做它们并使它们像StandardData这样的单词。