我现在使用此函数来代替.
Function ComputRsFieldCount(Rs As Recordset, sField As String)
Dim tmpRs As Recordset
Set tmpRs = Rs.Clone
Dim iCount As Long
tmpRs.MoveFirst
For i = 0 To tmpRs.RecordCount - 1
iCount = tmpRs(sField).Value + iCount
tmpRs.MoveNext
Next
ComputRsFieldCount = iCount
End Function
有没有现成的函数?另外,如果我使用FILTER后只显示N条记录在DATAGRID里,但我用上面的函数计算出来的数值依然是所有记录的和,有什么办法只遍历可见的记录?
Function ComputRsFieldCount(Rs As Recordset, sField As String)
Dim tmpRs As Recordset
Set tmpRs = Rs.Clone
Dim iCount As Long
tmpRs.MoveFirst
For i = 0 To tmpRs.RecordCount - 1
iCount = tmpRs(sField).Value + iCount
tmpRs.MoveNext
Next
ComputRsFieldCount = iCount
End Function
有没有现成的函数?另外,如果我使用FILTER后只显示N条记录在DATAGRID里,但我用上面的函数计算出来的数值依然是所有记录的和,有什么办法只遍历可见的记录?
msgbox rs.fields("je")
msgbox rs.fields("je")
使用sum求和另外,如果我使用FILTER后只显示N条记录在DATAGRID里,但我用上面的函数计算出来的数值依然是所有记录的和,有什么办法只遍历可见的记录?
重新绑定记录集既可以了
看msdn的filter的用法
2、如果采用filer 则用过滤条件重新用sum计算rs.open "select sum(je) as je from table1 where 条件 ",conn,1,3
'复制一个数据集的结构
Function cyRs2Rs(ByVal Rs As Recordset) As Recordset
Screen.MousePointer = 13
On Error Resume Next 'NULL值写入会出错,则忽略
Dim i As Long
Dim RsTmp As New Recordset
With RsTmp
.CursorLocation = adUseClient
'复制结构
For i = 0 To Rs.Fields.Count - 1
.Fields.Append Rs.Fields(i).Name, Rs.Fields(i).Type, 1
Next
'打开数据集
.Open
'将内容写入新数据集
Do While Not Rs.EOF
.AddNew
For i = 0 To Rs.Fields.Count - 1
'如果值为NULL则忽略写入的错误
RsTmp(i).Value = Rs(i).Value
Next
'逐条数据加入
Rs.MoveNext
Loop
'将指针移到第一条记录
If .RecordCount > 0 Then .MoveFirst
Set cyRs2Rs = RsTmp
End With
Screen.MousePointer = 0
End Function