说一下我自己最终的解决方案(vb6+access 完成),
1)建立了两个查询,一个查询负责获得范围内的用户编号,一个查询负责获得明细
×以下是
2)根据用户编号列表对每个用户进行统计
贴出部分代码(对符合条件的用户编号遍历):
If ExcuteSql(rctQueryAdvNo, "select * from QueryAdvNo") = True Then
'////继承过滤器
'rctQueryAdvNo.Filter = rctAdv.Filter
'Set lvTotal.DataSource = rctQueryAdvNo
End If
Do While Not (rctQueryAdvNo.EOF Or rctQueryAdvNo.BOF)
curCno = rctQueryAdvNo.Fields("编号")
If fCno <> curCno Then
GetCountAndMoney curCno
Debug.Print fCno, curCno, "Change", totalHour, totalMoney
fCno = curCno
lvTotal.ListItems.Add , , curCno
lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(1) = rctQueryAdvNo.Fields("姓名")
lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(2) = totalHour
lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(3) = totalMoney
lvTotal.ListItems(lvTotal.ListItems.Count).SubItems(4) = rctQueryAdvNo.Fields("余额")
allMoney = allMoney + totalMoney
allSave = allSave + rctQueryAdvNo.Fields("余额")
End If
rctQueryAdvNo.MoveNext
Loop
其二(对每个用户进行单独合计,写入变量 total xxx 中):
Do While Not (rctQueryAdvice.EOF Or rctQueryAdvice.BOF)
i = i + 1
If i <= rctQueryAdvice.RecordCount Then
'////////do the counts
countHour = Val(rctQueryAdvice("A_Hour")) + countHour
countMoney = Val(rctQueryAdvice("A_Hour")) * Val(rctQueryAdvice("A_Price")) + countMoney
End If
'///////////
rctQueryAdvice.MoveNext
Loop
If Not rctQueryAdvice.BOF Then
rctQueryAdvice.MoveFirst
End If
totalHour = countHour
totalMoney = countMoney
3)累加之后显示于表格,获得结果
似乎 VBA 的写法也差不了太多吧,在论坛上查了一下,单纯用查询似乎办不到