我正在使用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'"
不执行。当我单击触发此代码的按钮时,它永远不会要求我将附加到表中。
我上次陈述的格式化是否有问题?
答案 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这样的单词。