mysql - 使用 ADO.RecordSet 对象从 VBA 运行选择查询不返回完整结果

标签 mysql sql vba activexobject

我在本地主机上有一个 MySQL 数据库,我希望从 VBA 访问它。

我已经建立了与 MySQL 的 ODBC 连接,并且可以查询结果。

目前MySQL表有2行数据需要返回。但“Recordset.Fields”中的“Items”仅保留最后一行。

我的代码如下

Public Sub Query_()

Dim connection As connection
Set connection = OpenConnection()

' Create a record-set that holds all the tasks
Dim records As ADODB.Recordset
Set records = New ADODB.Recordset
Call records.Open("SELECT pk_Client, PAN_Client FROM client", connection)

Dim result() As String

For Each Item In records.Fields

    MsgBox (Item.OriginalValue)

Next

connection.Close

End Sub

这是 OpenConnection UDF:

Private Function OpenConnection() As ADODB.connection

'Read type and location of the database, user login and password

    Dim source As String, location As String, user As String, password As String
    source = "taskman"
    location = "localhost"
    user = "root"
    password = ""

'Build the connection string depending on the source

    Dim connectionString As String

    connectionString = "Driver={MySQL ODBC 5.3 Unicode Driver};Server=" & location & ";Database=taskman;UID=" & user & ";PWD=" & password

'Create and open a new connection to the selected source
    Set OpenConnection = New ADODB.connection
    Call OpenConnection.Open(connectionString)

End Function

请帮助我找出为什么整个查询结果没有被保留。

谢谢

-Chinmay Kamat

最佳答案

这是您通常编写此类操作的代码:

Public Sub Query_()

    Dim conn As ADODB.Connection
    Dim records As ADODB.Recordset, fld As ADODB.Field

    Set conn = OpenConnection()
    Set records = New ADODB.Recordset

    records.Open "SELECT pk_Client, PAN_Client FROM client", conn

    'check you got any records
    If Not records.EOF Then

        'loop over records
        Do While Not records.EOF

            Debug.Print "-------------------------"

            For Each fld In records.Fields
                Debug.Print fld.Name, fld.OriginalValue
            Next

            records.movenext 'next record
        Loop

    End If

    records.Close
    conn.Close

End Sub

关于mysql - 使用 ADO.RecordSet 对象从 VBA 运行选择查询不返回完整结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25698032/

相关文章:

javascript - 根据两个选择选项显示 mysql 的结果数

c# - 处理选择不存在的记录以避免空异常错误的更奇特的方法

mysql - 计算postgres/postgis中两个不相关表之间的重叠

excel - VBA遍历表

vba - 为列 D - M 添加总行

PHP 转换跟踪

php - 确定 SQL UPDATE 是否更改了列的值

SQL Server : Why do use SMO?

mysql - Node.js MySQL 查询错误

excel - 从文本文件 VBA 中提取数据,其中该行包含特定字符串