通SQL语句获得一个记录集m_rs1,请问可以对m_rs1进行查询吗?如果能请问如何查询?

解决方案 »

  1.   

    Filter 属性
          为 Recordset 中的数据指定筛选条件。设置和返回值设置或返回变体型值,该值包含以下某项内容: 条件字符串 — 由一个或多个用 AND 或 OR 操作符连接的子句组成的字符串。
    书签数组 — 指向 Recordset 对象中记录的唯一书签值数组。
    以下某个 FilterGroupEnum 值。常数 说明 
    AdFilterNone 删除当前筛选条件并恢复查看的所有记录。 
    AdFilterPendingRecords 允许只查看已更改且尚未发送到服务器的记录。只能应用于批更新模式。 
    AdFilterAffectedRecords 允许只查看上一次 Delete、Resync、UpdateBatch 或 CancelBatch 调用所影响的记录。 
    AdFilterFetchedRecords 允许查看当前缓冲区中的记录,即上一次从数据库中检索记录的调用结果。 
    AdFilterConflictingRecords 允许查看在上一次批更新中失败的记录。 
    说明使用 Filter 属性可选择性地屏蔽 Recordset 对象中的记录,已筛选的 Recordset 将成为当前游标。这将影响基于当前游标返回值的其他属性,如 AbsolutePosition、AbsolutePage、RecordCount 和 PageCount,因为将 Filter 属性设置为特定值可将当前记录移动到满足新值的第一个记录。条件字符串由 FieldName-Operator-Value 格式(如“LastName = 'Smith'”)的子句组成。可以创建用单独的 AND(如“LastName = 'Smith' AND FirstName = 'John'”)或 OR(如“LastName = 'Smith' OR LastName = 'Jones'”)子句连接而成的混合子句。对于条件字符串请遵循以下规则: FieldName 必须为 Recordset 中的有效字段名。如果字段名包含空格,必须用方括号将字段名括起来。
    Operator 必须使用的操作符为:<、>、<=、>=、<>、= 或 LIKE。
    Value 是用于与字段值(如 'Smith'、#8/24/95#、12.345 或 $50.00)进行比较的值。字符串使用单引号而日期使用井号 (#),对于数字,可以使用小数点、货币符号和科学记数法。如果 Operator 为 LIKE,Value 则可使用通配符。只允许使用星号 (*) 和百分号 (%) 通配符,而且必须为字符串的尾字符。Value 不可为 Null。
    AND 和 OR 在级别上没有先后之分。可使用括号将子句分组。但不能象以下示例那样先将由 OR 联接的子句分组,然后将该组用 and 联接到其他子句。
    (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'与之相反,可以构造如下形式的筛选:
    (LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')在 LIKE 子句中,可在样式的开头和结尾使用通配符(如 LastName Like '*mit*'),或者只在结尾使用通配符(如,LastName Like 'Smit*') 。 
    通过仅允许查看(例如)上次调用 UpdateBatch 方法时受到影响的记录,筛选常量使得在批更新模式时所发生的单个记录冲突更易于解决。设置 Filter 属性本身可能会因与基本数据发生冲突(如某记录已被其他用户删除)而失败。在此情况下,提供者将返回对 Errors 集合的警告但不停止程序执行。只有在所有需要的记录上发生冲突时才产生运行时错误。使用 Status 属性可定位发生冲突的记录。将 Filter 属性设置为零长度字符串 ("") 与使用 adFilterNone 常量具有同样效果。一旦设置 Filter 属性,当前记录位置将移动到 Recordset 中已筛选记录子集中的第一个记录。类似地,清除 Filter 属性后,当前记录位置将移动到 Recordset 的第一个记录。有关可与 Filter 属性一起使用创建数组的书签值的解释,请参考 Book 属性。
      

  2.   

    Filter 和 RecordCount 属性范例
    该范例使用 Filter 属性打开一个新的 Recordset,它基于适用于已有 Recordset 的指定条件。它使用 RecordCount 属性显示两个 Recordsets 中的记录数。该过程运行时需要 FilterField 函数。Public Sub FilterX()    Dim rstPublishers As ADODB.Recordset
        Dim rstPublishersCountry As ADODB.Recordset
        Dim strCnn As String
        Dim intPublisherCount As Integer
        Dim strCountry As String
        Dim strMessage As String    ' 使用出版商表中的数据打开记录集。
        strCnn = "Provider=sqloledb;" & _
            "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
        Set rstPublishers = New ADODB.Recordset
        rstPublishers.CursorType = adOpenStatic
        rstPublishers.Open "publishers", strCnn, , , adCmdTable    ' 充填记录集。
        intPublisherCount = rstPublishers.RecordCount    ' 获得用户输入。
        strCountry = Trim(InputBox( _
            "Enter a country/region to filter on:"))    If strCountry <> "" Then
            ' 打开已筛选的记录集对象。
            Set rstPublishersCountry = _
                FilterField(rstPublishers, "Country", strCountry)        If rstPublishersCountry.RecordCount = 0 Then
                MsgBox "No publishers from that country/region."
            Else
                ' 打印原始记录集和已筛选记录集对象的记录数。
                strMessage = "Orders in original recordset: " & _
                    vbCr & intPublisherCount & vbCr & _
                    "Orders in filtered recordset (Country = '" & _
                    strCountry & "'): " & vbCr & _
                    rstPublishersCountry.RecordCount
                MsgBox strMessage
            End If
            rstPublishersCountry.Close    End IfEnd SubPublic Function FilterField(rstTemp As ADODB.Recordset, _
        strField As String, strFilter As String) As ADODB.Recordset    ' 在指定的记录集对象上设置筛选操作并打开一个新的记录集对象。
        rstTemp.Filter = strField & " = '" & strFilter & "'"
        Set FilterField = rstTempEnd Function注意   当已知要选择的数据时,使用 SQL 语句打开 Recordset 通常更为有效。该范例说明了如何创建唯一的 Recordset 并从特定的国家(地区)获得记录。Public Sub FilterX2()    Dim rstPublishers As ADODB.Recordset
        Dim strCnn As String    ' 使用出版商表中的数据打开记录集。
        strCnn = "Provider=sqloledb;" & _
            "Data Source=srv;Initial Catalog=pubs;User Id=sa;Password=; "
        Set rstPublishers = New ADODB.Recordset
        rstPublishers.CursorType = adOpenStatic
        rstPublishers.Open "SELECT * FROM publishers " & _
            "WHERE Country = 'USA'", strCnn, , , adCmdText
            
        ' 打印记录集中的当前数据。
        rstPublishers.MoveFirst
        Do While Not rstPublishers.EOF
            Debug.Print rstPublishers!pub_name & ", " & _
                rstPublishers!country
            rstPublishers.MoveNext
        Loop    rstPublishers.CloseEnd Sub