从MySql数据库读取VBA脚本时出现问题
我在Excel中使用vba脚本时遇到一些问题,应该 从MySql数据库读取。SQL查询应该只返回一个 记录,但实际上返回一个空结果集。在phpMyAdmin中运行时,生成的语句工作正常 这是我的密码:从MySql数据库读取VBA脚本时出现问题,mysql,vba,excel,excel-2007,Mysql,Vba,Excel,Excel 2007,我在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
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函数连接正常,因为我正在运行其他脚本
用它。如果有人知道我做错了什么,那么任何人都会帮助我
受到赞赏
非常感谢
加里这可能是您选择的驾驶员的问题。我的建议是(我可能错了)-如果您通过ODBC连接,它可能有不同的命令集。MyODBC没有正确提供RecordCount属性 因此,如果确实需要RecordCount,请将CursorLocation属性设置为adUseClient。 如果没有,只需像下面这样迭代记录集:
Do While Not rs.EOF
'...do your magic
rs.MoveNext
Loop
使用
“
(双引号)而不是”
(单引号),因为您是通过ODBC驱动程序进行查询的。如果您不介意我询问的话,有什么问题?您正在编写的“查询”应该只返回一条记录但不要说实际发生了什么——它是返回多条记录还是返回空的结果集?在以后的情况下,我询问电子邮件地址
包含数据库中不存在的值。对不起,伙计们,sql返回一个空的结果集,其中它应该返回一个记录和一个字段,客户端id。我已通过phpMyAdmin运行SQL,并按预期收到一条记录。@ain从电子邮件地址为“”的客户端中选择客户端idvalid@email.address'限制1不要检查记录计数,而是检查EOF。记录集在打开后并不总是直接报告正确的计数。感谢您对řej的回复,我使用的是MySQL ODBC 5.1驱动程序。我已经在上面的帖子中添加了代码。谢谢你,这就是答案。我更改了检查,以查看rs(0)是否包含大于零的vaue,并且工作正常。