我在VBA中通过将许多变量连接到SQL字符串然后在ADO中执行字符串来进行相对混乱的SQL字符串。
这里有一些代码:
Sql = "insert into mydb.dbo.table values ('" & var1 & "','" & var2 & "','" & double1 & "," & double2 & "," & double3 & ")"
我不想复制整个代码,因为坦率地为27个变量做这件事可能会导致某人死亡。无论如何上面的代码我在SQL中重复了27个值(SQL表显然有27列)。但是在这样的21个连接之后,字符串不再连接。
总字符串字符长度为208,所以它肯定不能是VBA最大值252.是否有最大数量的连接值要输入到VBA字符串中?我可以用其他方法来实现这个目标吗?
非常感谢
答案 0 :(得分:2)
VBA中字符串的最大大小是65536字符...取决于应用程序版本,但在一行中你不能写这么多字符。在VBA的情况下,一行最多可以有1021个字符。 所以打破你的代码行。例如
sql = "Insert into....................."
sql = sql & "rest of the query"
答案 1 :(得分:1)
我不确定你的意思是'不再连接',但我通常使用一个数组来处理笨重的字符串。
Dim aSql(1 to 27) As String
aSql(1) = "'" & var1 & "'"
aSql(2) = "'" & var2 & "'"
aSql(3) = double1
aSql(4) = double2
...
adCmd.Execute "INSERT INTO mydb.dbo.table VALUES (" & Join(aSql,",") & ");"
答案 2 :(得分:1)
我没有找到答案。我能够将SQL表重构为更好的设计,但问题仍然存在于将多个变量连接在一个字符串中。