使用vba提交多个查询时出现MySQL错误

时间:2014-03-26 14:49:55

标签: mysql sql excel vba

当我尝试发送这个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)驱动程序] [mysqld-5.5.35-MariaDB]你有错误   在你的SQL语法中;查看与MariaDB对应的手册   用于正确语法的服务器版本"

奇怪的是,当我提交单个插入语句时,它完美地运行。 我确实意识到解决方法是逐个发送这些语句 - 但这似乎不是最佳解决方案。

在此先感谢,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

问题似乎是当您尝试在单个ADODB连接中执行多个操作时,如果您查找正确的位置,则表明您不是唯一有此问题的人。我见过的一个解决方案是使用多行插入语法:

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

您可能会发现以下文章很有帮助(通过Google搜索"多个操作adodb"找到):