我在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函数连接正常 用它。如果有人能看到我做错了什么,那么任何帮助都会 不胜感激。
非常感谢提前。
加里
答案 0 :(得分:2)
MyODBC没有正确提供RecordCount-Attribute。
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
答案 1 :(得分:1)
使用"
(双引号)代替'
(单引号),因为您正在查询ODBC驱动程序。
答案 2 :(得分:0)
这可能是您选择的驱动程序的问题。我的建议是(我可能错了) - 如果你通过ODBC连接它可能有不同的命令集。