ODBC в VBA медленно нарушение

Обновить

April 2019

Просмотры

37 раз

1

Я использую Windows 7 Professional на 64-разрядной операционной системе. Я использую VBA в Excel и подключение драйвера MySQL ODBC 5.2ANSI в SysWOW64 для подключения и выполнения запросов в базе данных MySQL Workbench 6.3. Мой макрос запускает серию запросов. Это не работает нормально, пока другой день, когда некоторые из запросов перестали работать. Я печатаю каждый запрос, и когда я вручную скопировать и вставить запрос в базу данных MySQL Workbench, запрос работает нормально; данные, безусловно, есть. Все больше и больше запросов перестали работать, как раз пошел на.

Т.Е. первый день с вопросами, пара запросов не дал результатов. Макрос работает около 30 запросов. Теперь о 7 из запросов не работают.

Я не понимаю, почему некоторые запросы возвращают результаты, но не другие. Когда я отладка, я вижу ADODB.Connection соединяется, но набор записи erroring из при попытке выполнить запрос.

Вот то, что код выглядит следующим образом:

Sub Test()

Dim myODBC As String

Dim ConnectionString As String

Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim SQL As String, SQL_ML As String
Dim Var as Double

ConnectionString = “Connection String”

SQL = “SQL String”
Var = MyFunction(SQL, ConnectionString)
    ‘ Different variable names are used within the function for the connection 
    'and record set
    ‘There are 4 functions in this fashion. Only 1 is erroring out at the 
     'moment!

Dim rng_ML As Range
Set rng_ML = Application.Range("rng_ML")
Dim ML_Matrix() As Double
ReDim ML_Matrix(1, rng_ML.Columns.count)

For i = 1 To UBound(ML_Matrix, 2)
    SQL_ML = SQL & rng_ML(1, i)
    Set rs = conn.Execute(SQL_ML)  ‘This is where it is SOMETIMES erroring out.
    rs.MoveFirst
    ws.Cells(Row, 1 + i).CopyFromRecordset rs
Next i
End Sub`

Опять же, этот код работал в течение нескольких месяцев, и теперь медленно ломаясь. Кто-нибудь слышал об этом раньше?

1 ответы

0

Add the following check:

If rs.RecordCount > 0  Then
  rs.MoveFirst
  ws.Cells(Row, 1 + i).CopyFromRecordset rs
End If

I cannot see where you open the connection but I assume you do it before executing the SQL statements. Please post the error description, otherwise we can just guess...