【问题标题】:Syntax error (missing operator) in query expression in VBA in MS AccessMS Access 中 VBA 中的查询表达式中的语法错误(缺少运算符)
【发布时间】: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 定义/分配在哪里?这是来自外部数据库吗?

标签: ms-access vba


【解决方案1】:

您的 SQL 语句中似乎缺少要删除的内容

你的第一个查询应该是

DELETE * FROM TempTable_Entity_mapping_DEFSET_Selection;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 2019-07-18
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    相关资源
    最近更新 更多