select sum(f) form (select * from table1 where ... )
记得好像可以用QueryDef,select * from qdf where ..." 不太清楚了,自己看一下是否可行
用rs.filter一个简单例子: 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
不太清楚了,自己看一下是否可行
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