在VBA中插入SQL得到运行时错误3134

时间:2013-12-24 11:36:04

标签: sql vba insert

SQL insert语句给出3134运行时错误。为什么呢?

Private Sub Command0_Click()

Open "C:\Users\steven.EOPESTATE\Desktop\Sharp Sales\TRMSAVE01.txt" For Input As #1

        Do Until EOF(1)
            Dim TranSQL As String
            Line Input #1, varLine
            testvarline = Split(varLine, ",")
            If testvarline(0) = "$Tran" Then
            Debug.Print testvarline(0), testvarline(1), testvarline(2), testvarline(3), testvarline(4), testvarline(5), testvarline(6), testvarline(7), testvarline(8), testvarline(9)

            TranSQL = "Insert into Transaction ([Tran ID], [1], [2], [3], [4], [5], [6], [Date], [Time], [9])  Values (testvarline(0), testvarline(1),testvarline(2),testvarline(3),testvarline(4), testvarline(5),'testvarline(6)',# " & Format(testvarline(7), "MM/DD/YY") & "#,# " & Format(testvarline(8), "HH:MM:SS") & "#,testvarline(9)"
            DoCmd.RunSQL TranSQL

            End If

        Loop

Close #1

1 个答案:

答案 0 :(得分:1)

您实际上是在尝试将testvarline(0)插入tran ID而不是值,即为了简化您尝试运行的插入语句:

INSERT INTO Transaction ([Tran ID])
VALUES (testvarline(0));

哪个是无效的SQL,您需要正确构建插入语句:

TranSQL = "INSERT .... VALUES(" & testvarline(0) & ", " & testvarline(1) & ...

因此,您实际上将数组中的值放入insert语句中。

不幸的是,我对VBA的了解并没有延伸到使用参数化查询,如果可能的话,我会推荐它,因为你可以通过SQL Injection