【发布时间】:2023-03-04 15:35:01
【问题描述】:
我在这个 INSERT INTO 中遇到了一个我似乎无法弄清楚的错误。代码遍历 Dao 记录集,仅将某些记录附加到表中。
Dim maxDate As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim sqlinsert As String
maxDate = DMax("[Eff Date]", "400_CF_BREAK_LOG")
Set db = CurrentDb
Set rs = db.OpenRecordset("860_APPEND_DIFFERENCES")
If Not rs.BOF Then
'populate the table
rs.MoveFirst
Do
If (rs![Eff Date] > maxDate Or IsNull(maxDate)) Then
sqlinsert = "INSERT INTO 400_CF_BREAK_LOG (Eff Date, PrimarySecurity ID Number, CUSIP(Aladdin ID), IsrName, Asset Type, Metlife Port Code, Business Unit, Principal Difference, Total PAM Principal, Total Aladdin Principal,Income Difference, Total PAM Interest,Total Aladdin Interest,Total CF Difference,Total PAM CF,PAM Coupon)" & _
" VALUES ('" & rs("Eff Date") & "', '" & rs("PrimarySecurity ID Number") & "', '" & rs("CUSIP(Aladdin ID)") & "', '" & rs("IsrName") & "', '" & rs("Asset Type") & "', '" & rs("Metlife Port Code") & "', '" & rs("Business Unit") & "', '" & rs("Principal Difference") & "', '" & rs("Total PAM Principal") & "', '" & rs("Total Aladdin Principal") & "','" & rs("Income Difference") & "', '" & rs("Total PAM Interest") & "', '" & rs("Total Aladdin Interest") & "', '" & rs("Total CF Difference") & "', '" & rs("Total PAM CF") & "', '" & rs("PAM Coupon") & "') "
DoCmd.RunSQL (sqlinsert)
End If
rs.MoveNext
Loop Until rs.EOF
End If
我在 INSERT INTO 语句中不断收到语法错误,但我已经检查了几次。
编辑 - 解释。标签
【问题讨论】:
-
不能使用空格,需要使用
[Eff Date] -
正如@Nathan_Sav 所说,您的查询中带有空格的名称仅比
[Eff Date]多得多,它们都需要用方括号括起来。另外,注意变量类型。如果 [Eff Date] 是日期而不是字符串,则说明您处理不正确。另请注意,如果您在上面共享的代码是完整的,则可以将其替换为单个追加查询,并且运行效率更高并且更易于调试。 -
@ErikvonAsmuth 不幸的是,我无法运行附加查询,因为它会添加一批记录,而我需要检查每条记录然后添加它。