我正在尝试已经完成数百次的事情 - 除了我的代码不能编译。使用它作为参考How to do INSERT into a table records extracted from another table我提出了以下子,它应该清除一个表并从另一个链接表中重新填充它(想法是解放链表,所以它没有.laccdg文件名称为long)
Private Sub Form_Open(Cancel As Integer)
Dim rsDocs As Recordset
Dim sqlQuery As String
DoCmd.RunSQL "DELETE * FROM [Docs]"
sqlQuery = "INSERT INTO [Docs] (Numero, Description, [ID Symix], Groupe, [ID Sami])" & _
" SELECT [Unité] & "" "" & [Numéro Document] AS Numero, Description, [ID Symix], [Groupe Source], [ID Doc Sami]" & _
" FROM [Documents]"
Debug.Print sqlQuery
Set rsDocs = CurrentDb.OpenRecordset(sqlQuery)
CurrentDb.Execute sqlQuery
rsDocs.Close
Set rsDocs = Nothing
End Sub
我在执行行上出错了。 sql语句错误。有人能看到它摇摇欲坠的地方吗?使用"" ""在这种情况下加入两个可以接受的领域?
此外,清除表会提示一条消息,询问我是否确定要执行此操作。将DisplayAlerts设置为False会产生负面影响吗?或者,如果我在之后将其恢复为True,它应该是无害的吗?
答案 0 :(得分:2)
调试您在VBA中设计的查询的一般提示:
通常,您将从查询编辑器获得比从VBA获得的更具体的错误消息。
Access中的DisplayAlerts是:DoCmd.SetWarnings True / False 但是使用DB.Execute而不是DoCmd.RunSQL来避免它是better
答案 1 :(得分:0)
无需额外的双引号
"INSERT INTO [Docs] (Numero, Description, [ID Symix], Groupe, [ID Sami])" & _
" SELECT [Unité] & " " & [Numéro Document] AS Numero, Description, [ID Symix], [Groupe Source], [ID Doc Sami]" & _
" FROM [Documents]"
答案 2 :(得分:0)
使用1组单引号,而不是2组双引号(不起作用)或1组双引号(不产生有效字符串),而是使用1组单引号:
sqlQuery = "INSERT INTO [Docs] (Numero, Description, [ID Symix], Groupe, [ID Sami])" & _
" SELECT [Unité] & ' ' & [Numéro Document] AS Numero, Description, [ID Symix], [Groupe Source], [ID Doc Sami]" & _
" FROM [Documents]"