SQL VBA 中的语句

SQL statement in VBA

我正在尝试 运行 ACCESS 2013 中的以下 SQL 语句 VBA 但由于格式错误而出现错误(在这种情况下我得到 "Semicolon (;) missing from end of statement") .有人可以告诉我下面的代码我做错了什么吗?

Dim dbs As dao.Database

Set dbs = CurrentDb()

dbs.Execute "INSERT INTO TEMP2 ([Study_Date], [Created_By], [Part_Number], 
[Upper_Tolerance], [Lower_Tolerance], [ID21_Number]) VALUES ([Study_Date], 
[Created_By], [Part_Number], [Upper_Tolerance], [Lower_Tolerance], [ID21_Number]) 
FROM RAC_DATA_ENTRY 
WHERE [RAC_CAP_VALS] = '" & Me.[RAC_CAP_VALS] & "'"

当您将数据从一个 table 拉到另一个 INSERT 时,不要使用 VALUES。请改用 SELECT

此示例仅使用您的两个字段。添加您需要的其他内容。

Dim strInsert As String
strInsert = "INSERT INTO TEMP2 ([Study_Date], [Created_By])" & _
    " SELECT [Study_Date], [Created_By] FROM RAC_DATA_ENTRY" & _
    " WHERE [RAC_CAP_VALS] = '" & Me.[RAC_CAP_VALS].Value & "';"
Debug.Print strInsert '<- view this in Immediate window; Ctrl+g will take you there
dbs.Execute strInsert, dbFailOnError

备注:

  1. 语句末尾的分号是可选的。无论有无它,Access 都会认为该语句有效。
  2. Value 实际上并不需要在 Me.[RAC_CAP_VALS] 之后,因为它是默认值 属性。我更喜欢把它说清楚。
  3. dbFailOnError 为您提供有关失败插入的更多信息。没有它,诸如违反主键之类的问题将悄无声息地失败。
  4. Debug.Print strInsert 允许您检查您构建的语句并要求数据库引擎执行。如果有问题,您可以从Immediate window 中复制语句文本并将其粘贴到新的Access 查询的SQL 视图中进行测试。