首页 > 解决方案 > 错误:查询表达式 VBA 中缺少运算符

问题描述

我正在编写 VBA 来循环遍历 excel 文件并将数据上传到访问犯罪数据库。

我的模板 sql 语句是:

sql = "insert into crimedata(reportYear, state, school, campus, dataLabel, dataValue)" & _ 
      "values(<reportYear>, <state>, <school>, <campus>, <dataLabel>, <dataValue>);"

我构建查询并执行它的逻辑如下:

sql = Replace(sql, "<dataValue>", s.Cells(i, c).value)
sql = Replace(sql, "<reportYear>", Year)
sql = Replace(sql, "<state>", State)
sql = Replace(sql, "<school>", s.Cells(i, 1).value)
    If s.Cells(i, 2).value = "" Then
       sql = Replace(sql, "<campus>", "null")
    Else
       sql = Replace(sql, "<campus>", s.Cells(i, 2).value)
    End If
sql = Replace(sql, "<dataLabel>", s.Cells(5, c).value)
cn.Execute sql

当我删除cn.Execute sqlDebug.Print sql在每个循环之后,我得到如下语句:

insert into crimedata(reportYear, state, school, campus, dataLabel, dataValue)values(2011, ALASKA, University of Alaska, Fairbanks, Larceny, 64);
    
insert into crimedata(reportYear, state, school, campus, dataLabel, dataValue)values(2011, ALASKA, University of Alaska, Fairbanks, Autotheft, 3);

但是,当我添加cn.Execute sql执行查询时,出现以下错误:

运行时错误“-2147217900 (80040e14)”:查询表达式“阿拉斯加大学”中的语法错误(缺少运算符)

截屏

我不确定我在语法方面缺少什么?

标签: sqlexcelvba

解决方案


如果它们是文本,您的值需要用下面的引号括起来:

values(2011, 'ALASKA', 'University of Alaska', 'Fairbanks', 'Larceny', 64)

所以在这里调整:

sql = "INSERT INTO crimedata (reportYear, state, school, campus, dataLabel, dataValue)" & _ 
      "VALUES (<reportYear>, '<state>', '<school>', '<campus>', '<dataLabel>', <dataValue>);"

如果您的字段reportYeardataValue定义为文本字段,那么也将它们包含在引号''中,如果它们被定义为数字字段,则不要。


推荐阅读