Проблема с чтением скрипта VBA из базы данных MySql - PullRequest
0 голосов
/ 21 июля 2011

У меня возникли проблемы со скриптом vba в Excel, который должен считываться из базы данных MySql.Запрос SQL должен возвращать только одну запись, но фактически возвращает пустой набор результатов.Сгенерированный оператор работает нормально при запуске через phpMyAdmin.

Вот мой код:

Function getClientId(emailAddress As String)
    Dim rs As ADODB.Recordset
    Dim sql As String

    ConnectDB

    Set rs = New ADODB.Recordset

    sql = "SELECT client_id FROM clients WHERE email_address = '" & emailAddress & "' LIMIT 1"
    Debug.Print sql
    rs.Open sql, oConn

    Debug.Print rs.RecordCount

    If (rs.RecordCount = -1) Then
        getClientId = Null
    Else
        getClientId = rs(0)
    End If
    rs.Close
End Function

РЕДАКТИРОВАТЬ: Моя функция подключения к базе данных.

Function ConnectDB()
    On Error GoTo ErrHandler

    Set oConn = New ADODB.Connection
    oConn.Open "DRIVER={MySQL ODBC 5.1 Driver};" & _
    "SERVER=localhost;" & _
    "DATABASE=mydb;" & _
    "USER=user;" & _
    "PASSWORD=password;" & _
    "Option=3"

    'Debug.Print oConn

    Exit Function
ErrHandler:
    MsgBox Err.Description, vbCritical, Err.Source
End Function

Функция ConnectDBподключение нормально, так как я запускаю другие сценарии с ним.Если кто-нибудь увидит, что я делаю не так, то любая помощь будет признательна.

Заранее большое спасибо.

Гарри

Ответы [ 3 ]

2 голосов
/ 22 июля 2011

MyODBC неправильно предоставляет атрибут RecordCount-Attribute.

Re: Проблема с RecordCount с ASP & MySQL

rs.recordcount = -1 с myODBC

Re: ADO Connection RecordCount

Итак, если вам действительно нужен RecordCount, установите для свойства CursorLocation значение adUseClient. Если нет, просто переберите RecordSet следующим образом:

Do While Not rs.EOF
    '...do your magic
    rs.MoveNext
Loop
1 голос
/ 06 апреля 2012

Используйте " (двойная кавычка) вместо ' (одинарная кавычка), потому что вы запрашиваете через драйвер ODBC.

0 голосов
/ 21 июля 2011

Это может быть проблема с выбранным вами драйвером.Я предлагаю (и я могу ошибаться) - если вы подключаетесь через ODBC, он может иметь другой набор команд.

...