题目:我现在要做一个多条件查询。(后台数据库和前台操作在不同的机器上)
      如: 
           条件:(1)大于30    (2)男性 
        
         当我选中条件(1)时,从数据库中查询出相应的记录并显示在vb控件MsFhlexGrid中,当我再选中条件(2)时,从上一步的操作结果中再选出满足条件的记录。
            要求:1,第一步操作结果不能保存在临时表中
                  2,第二步操作要利用第一步的结果   请问该如何实现?

解决方案 »

  1.   

    建议用ADO进行操作。用SQL进行第一个条件查询,结果保存在记录集中,进行第二个条件的查询,只需在记录集中按照条件再查对应字段符合的记录即可。
      

  2.   

    可以利用 RecordSet的Filter属性,例子见下面:使用 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 to filter on:"))   If strCountry <> "" Then
          ' 打开已筛选的记录集对象。
          Set rstPublishersCountry = _
             FilterField(rstPublishers, "Country", strCountry)      If rstPublishersCountry.RecordCount = 0 Then
             MsgBox "No publishers from that country."
          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 并从特定的国家(地区)获得记录。