2013-12-24 6 views
0

Оператор SQL insert, дающий ошибку выполнения 3134. Зачем?Вставить SQL в VBA, получив ошибку времени выполнения 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

Вы фактически пытаетесь вставить testvarline(0) в tran ID, а не значение, т.е. для упрощения вставки заявление вы пытаетесь запустить:

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

Который не является действительным SQL, вам нужно правильно создайте свою инструкцию для вставки:

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

Таким образом, вы фактически получаете значения внутри вашего массива в инструкции insert.

К сожалению, мое знание VBA не распространяется на использование параметризованных запросов, если это вообще возможно, я бы рекомендовал его как ваши мог по восприимчив к SQL Injection

Смежные вопросы