Excel VBA INSERT INTO 语句使用变量

Posted

技术标签:

【中文标题】Excel VBA INSERT INTO 语句使用变量【英文标题】:Excel VBA INSERT INTO statement using variables 【发布时间】:2009-11-24 19:32:09 【问题描述】:

我正在使用 SQL 查询将数据从 excel 工作表插入到 Access 数据库中。我将工作表中我想要的所有数据放入变量中:

rwyNumber = Range("b13").Value & Range("c13").Value
testDate = Range("b5").Value
testTime = Range("b6").Value
rwySide1 = Range("b14").Value
firstThird1 = Range("b28").Value
secondThird1 = Range("b29").Value
thirdThird1 = Range("b30").Value
averageFriction1 = Range("b23").Value

如果我想将 testDate 和 testTime 存储为日期/时间,我是否需要在将它们存储在变量中时进行转换(如上),或者只要我有数据类型,就会自动将它们设为日期/时间为表中的那些列设置日期/时间?也可以使用双打和字符串。

我的其余查询的正确语法是什么:

stSQL1 = "INSERT INTO Friction Tests  (Runway Number, Runway Test Side, Test Date, Test Time, 1/3, 2/3, 3/3, Average)"
stSQL1 = "VALUES ( " ....

该表具有自动 PK。前两个值是字符串,后两个是日期/时间,最后四个是双精度值。

【问题讨论】:

【参考方案1】:

为什么不使用日期/时间字段来包含测试时间?

最好格式化日期,假设 b5 是日期类型:

testDate = Format(Range("b5").Value,"yyyy/mm/dd")

你最终会得到文本,但这并不重要。

stSQL1 = "INSERT INTO [Friction Tests] ([Runway Number], [Runway Test Side], " _
& "[Test Date], [Test Time], [1/3], [2/3], [3/3], [Average]) " _
& "VALUES ( " & rwyNumber  & ",#" &  testDate   & "#,#" & testTime   _
& "#," & rwySide1   & "," & firstThird1 _
& "," & secondThird1   & "," & thirdThird1 _
& "," & averageFriction1 & ")"

如果任何字段是文本,则值必须用单引号或两个双引号括起来,类似于日期和时间。

我强烈建议去掉字段(列)和表名中的空格。

【讨论】:

您还需要在 Friction Tests 表名周围加上方括号,因为表名中有一个空格。 谢谢。 testDate 应该是数据类型 Date 吗? rwyNumber 是一个字符串(例如 16L,34R)。应该是 VALUES ('" & rwyNumber & "' ....? 不,它应该包含格式为年、月、日的数据。我通常使用“yyyy/mm/dd”,但“yyyy-mm-dd”也不错。我在上面提到了这一点。 是的,VALUES ('" & rwyNumber & "' 。如果 rwyNumber 有可能包含引号,例如 16L'34R,则需要用两个引号替换它,Replace(rwyNumber, "'","''")

以上是关于Excel VBA INSERT INTO 语句使用变量的主要内容,如果未能解决你的问题,请参考以下文章

VBA 中的 INSERT INTO 查询

Access 2010 中的 INSERT INTO 语句中出现 SQL 语法错误

访问 INSERT INTO - 几个参数。预计 2

Access 2013 VBA - 后续 SELECT 查询未找到来自 INSERT INTO 的新记录

insert into 语句错误

excel vba链接sql怎样使运行速度变快