如果#
或 中的Notes
字段ReportMasterTable
是文本数据类型,则必须在尝试的值周围添加引号INSERT
。
例如,如果两个字段都是文本类型:
queryString = "INSERT INTO [ReportMasterTable]([#], [Notes])" & vbCrLf & _
"VALUES ('" & [#].Value & "', '" & [Consolidate].Value & "')"
[#].Value
如果其中一个或[Consolidate].Value
包含单引号,情况将更加复杂。您可以将插入值中的单引号加倍。但是,仅切换到参数化查询可能会更容易……引用问题将消失。
Dim db As DAO.database
Dim qdf As DAO.QueryDef
Dim strInsert As String
strInsert = "PARAMETERS hash_sign Text (255), note_value Text (255);" & vbCrLf & _
"INSERT INTO [ReportMasterTable]([#], [Notes])" & vbCrLf & _
"VALUES (hash_sign, note_value)"
Set db = CurrentDb
Set qdf = db.CreateQueryDef("", strInsert)
qdf.Parameters("hash_sign").value = Me.[#]
qdf.Parameters("note_value").value = Me.[consolidate]
qdf.Execute dbFailOnError
Set qdf = Nothing
Set db = Nothing
您还可以将 SQL 语句保存为命名查询并打开并执行它,而不是每次运行过程时都重新构建语句。