Excel VBA - 循环记录集

标签 excel recordset vba

循环记录集时遇到问题;这是代码:

    Dim query as String
    query = "SELECT * FROM test WHERE " & filter

    ' Declare variables'
    Dim objMyConn As ADODB.Connection
    Dim objMyCmd As ADODB.Command
    Dim objMyRecordset As ADODB.Recordset
    Dim objRst As ADODB.Recordset

    Set objMyConn = New ADODB.Connection
    Set objMyCmd = New ADODB.Command
    Set objMyRecordset = New ADODB.Recordset

    'Open Connection'
    objMyConn.ConnectionString = "Provider=SQLOLEDB;Data Source=MyServer;Initial Catalog=MyDB;User ID=test;Password=test"
    objMyConn.Open

    'Set and Excecute SQL Command'
    Set objMyCmd.ActiveConnection = objMyConn
    objMyCmd.CommandText = query
    objMyCmd.CommandType = adCmdText

    'Open Recordset'
    Set objMyRecordset.Source = objMyCmd
    objMyRecordset.CursorLocation = adUseClient
    objMyRecordset.CursorType = adOpenStatic
    objMyRecordset.Open

    Dim FindRecordCount As Integer
    If objMyRecordset.EOF Then
        FindRecordCount = 0
    Else
        objMyRecordset.MoveLast
        FindRecordCount = objMyRecordset.RecordCount ' In this case it returns 4
    End If

     Do Until objMyRecordset.EOF = True
        ' Get variables

        ...

        ' Move to next Record
        objMyRecordset.MoveNext
     Loop

当我检查记录集有多少行时,它返回 4,但只通过循环一次。在这种情况下,它应该循环 4 次。

最佳答案

你用过movelast在循环之前,所以你需要 movefirst如果您想实际迭代所有记录。

关于Excel VBA - 循环记录集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25846954/

相关文章:

sql - 将数据从 Excel 导入/更新到 SQL Server

python - 带有 Pandas 的数据库 : adding new data

sql - 根据列值删除行

asp-classic - 经典 ASP : RecordSet Field giving no value

excel - 使用记录集修改 Excel 数据透视表并刷新 : Exception

.net - 手动创建的记录集的行为与断开连接的记录集不同

excel - VBA Excel-从Excel发送邮件

excel - 使用 VBScript 代码更改 Excel 中的边距

arrays - 将两个不相邻的列分组为 Excel VBA 脚本的二维数组

excel - 使用 Charcter().Insert 格式化单元格中的文本片段 (VBA)