【发布时间】:2023-03-12 00:23:02
【问题描述】:
我收到以下错误消息:3075 在查询表达式中缺少运算符
这里是代码的简短 sn-p:
Dim dbs As Database
Set dbs = CurrentDb()
dbs.Execute "DELETE FROM TempTable_Entity_mapping_DEFSET_Selection;"
Do While Not rsDEFSET.EOF
Debug.Print rsDEFSET.Fields.item("RESULT").Value
MIP = rsDEFSET.Fields.item("FK_DIM_MBR_ITEM").Value
KPIName = rsDEFSET.Fields.item("SHORTNAME_MBR").Value
ID = rsDEFSET.Fields.item("RESULT").Value
DefSetName = rsDEFSET.Fields.item("KPI_DEFSET_NAME")
Scenarios = rsDEFSET.Fields.item("SCENARIOS")
fillTempTab = "INSERT INTO TempTable_Entity_mapping_DEFSET_Selection (MIP, KPIName, ID, DefSetName, Scenarios) VALUES ('" & MIP & "','" & KPIName & "','" & ID & "','" & DefSetName & "','" & Scenarios & "');"
Debug.Print fillTempTab
dbs.Execute fillTempTab
rsDEFSET.MoveNext
Loop
【问题讨论】:
-
rsDEFSET定义在哪里? -
你应该使用准备好的语句;特别是如果您从不受信任的来源获得输入。以下是如何使用它们的示例:stackoverflow.com/questions/6572448/…
-
我同意@bernie,您可以将插入和删除语句存储在持久化查询定义中,然后将参数添加到查询定义对象。此外,您不需要 '.Fields.item',rsDefset("field") 就可以了。
-
您在 dbs.execute 语句中遇到错误?另外,ID 字段是文本而不是数字?
-
不是通过 VBA 来做这一切,难道你不能只创建一个
INSERT INTO查询并将结果直接发布到TempTable_Entity_mapping_DEFSET_Selection吗?还想回应 Ken 的评论:rsDEFSET定义/分配在哪里?这是来自外部数据库吗?