sql - 错误:查询表达式 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 sql
并Debug.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)”:查询表达式“阿拉斯加大学”中的语法错误(缺少运算符)
我不确定我在语法方面缺少什么?
解决方案
如果它们是文本,您的值需要用下面的引号括起来:
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>);"
如果您的字段reportYear
也dataValue
定义为文本字段,那么也将它们包含在引号''
中,如果它们被定义为数字字段,则不要。
推荐阅读
- arrays - 从 txt 文件中读取重音字符时出现问题
- sharepoint - 如何只允许特定用户从共享点列表中添加/删除项目?
- discord.py - Discord py动漫人物数据库
- javascript - 如何在一个测试使用异步等待的同一个 yup 字段上执行两个测试
- android - Flutter 如何在没有任何第三方库的情况下从 url 下载文件
- gatling - 如何进行 Gatling TCP 模拟
- java - Quarkus 在测试期间抛出 org.jboss.jandex.UnsupportedVersion: Version: 10
- runner - 如何将 gitlab-runner 安装到 ALT Linux?
- amazon-web-services - 在阶跃函数中读取先前 lambda 的输出
- javascript - 无法从数据表标题中删除悬停颜色