У меня есть макрос, который открывает соединение ADODB с библиотекой MySQL.Есть два запроса, которые генерируются в макросе.Первый, который работает, это оператор выбора для проверки на наличие дубликатов.Второй, который не работает, - это вставить записи в ту же таблицу, на которую ссылается оператор select.Я не получаю ошибок от VBA, и когда я копирую / вставляю непосредственно в MySQL, запрос работает нормально.
В верхней части макроса я установил соединение следующим образом:
TimesheetConn = "DRIVER={MySQL ODBC 5.3 ANSI Driver}; SERVER=*server number*;PORT=*port number*;database=my_db;UID=User;PWD=password;Option=2"
'Connection Info
Dim cnn As ADODB.Connection
On Error GoTo AdoError
Set cnn = New ADODB.Connection
With cnn
.ConnectionString = TimesheetConn
.Open
.CommandTimeout = 0
End With
Set FIT_Data = New ADODB.Recordset
Set Task_Data = New ADODB.Recordset
Затем я разрабатываю запрос Select (fitidquery) и запускаю его следующим образом:
FIT_Data.Open fitidquery, cnn, CursorType = 2
Я не закрываю соединение, но затем перехожу к генерации следующего запроса - запроса на вставку (addtasks3) с помощью циклачерез строки и присвоение переменных.
Затем я пытаюсь снова вызвать соединение с помощью:
Task_Data.Open addtasks3, cnn, adOpenForwardOnly, adLockReadOnly
cnn.Close
И оно не работает и не дает никаких ошибок ни для VBA, ни для SQL.,Как было сказано выше, при копировании результата debug.print (addtasks3) в MySQL запрос выполняется правильно и вставляет записи.
Я попытался открыть второе соединение с теми же параметрами.Это не сработало.Я переместил язык On Error перед вторым вызовом запроса, и он перешел к сообщению AdoError, которое, похоже, указывает на то, что соединение там потеряно.
Я ценю любую помощь!