Ошибка MySQL при отправке более одного запроса с использованием vba

0

У меня есть странная проблема, когда я пытаюсь отправить этот запрос MySQL:

insert into tblWydatkiPLN(
  IDDelegacji, 
  IDKategoria, 
  IDTypTransakcji, 
  Kwota, 
  Opis
) values(
  '13', 
  '3', 
  '1', 
  '44.15', 
  'Taxi'
);

insert into tblWydatkiPLN(
  IDDelegacji, 
  IDKategoria, 
  IDTypTransakcji, 
  Kwota, 
  Opis
) values(
  '13', 
  '3', 
  '1', 
  '57.71', 
  'Taxi'
);

используя vba. Я отправляю его с помощью этого кода (используя переменную strSQL):

Set DBConnection = CreateObject("ADODB.Connection")
DBConnection.Open strConnString
Debug.Print strSQL

If InStr(strSQL, "select") = 1 Then
    Set DBRecordset = CreateObject("ADODB.Recordset")
    DBRecordset.Open strSQL, DBConnection, adOpenStatic
    If Not DBRecordset.EOF Then
        myArray = DBRecordset.GetRows()
    End If
    Set DBRecordset = Nothing
Else
    DBConnection.Execute strSQL
End If
Set DBConnection = Nothing

это сообщение об ошибке, которое я получаю:

"[MySQL] [ODBC 5.2 (w) Driver] [mysqld-5.5.35-MariaDB] У вас есть ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии сервера MariaDB, для правильного синтаксиса"

Странно то, что когда я отправляю один оператор вставки, он отлично работает. Я действительно понимаю, что обходным путем было бы послать эти заявления один за другим, но это не кажется оптимальным решением.

Заранее спасибо, любая помощь будет очень оценена.

Теги:
excel

1 ответ

1
Лучший ответ

Проблема заключается в том, что вы пытаетесь выполнить несколько действий в одном подключении ADODB, и кажется, что вы не единственный человек с этой проблемой, если вы смотрите в нужные места. Одним из решений, которое я видел, является использование синтаксиса вставки нескольких строк:

INSERT INTO tblWydatkiPLN(
  IDDelegacji, 
  IDKategoria, 
  IDTypTransakcji, 
  Kwota, 
  Opis
) VALUES
    ('13', '3', '1', '44.15', 'Taxi')
   , ( '13', '3', '1', '57.71', 'Taxi' )

Возможно, вы найдете следующие полезные статьи (найденные в googling "multiple actions adodb"):

  • 0
    Блестяще, это работает - я использовал многострочный синтаксис вставки. Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню