我在使用 Excel 中的 vba 脚本时遇到一些问题,应该是 从 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 函数连接正常,因为我正在运行其他脚本 用它。如果有人能看到我做错了什么那么任何帮助都会 值得赞赏。
提前非常感谢。
加里
最佳答案
MyODBC 未正确提供 RecordCount 属性。
Re: Problem with RecordCount with ASP & MySQL
rs.recordcount = -1 with myODBC
Re: ADO Connection RecordCount
因此,如果您确实需要 RecordCount,请将 CursorLocation 属性设置为 adUseClient。 如果没有,只需像这样迭代 RecordSet:
Do While Not rs.EOF
'...do your magic
rs.MoveNext
Loop
关于mysql - VBA脚本从MySql数据库读取时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6774690/