以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  简单得不能再简单的问题了  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=14345)

--  作者:唐尸三摆手
--  发布时间:2011/11/16 16:20:00
--  简单得不能再简单的问题了

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.foxdb

DataTables("表B").datarows.clear
Dim Arys As List(Of String()) = DataTables("表A").GetUniqueValues("","日期","摘要")
For Each Ary As String() In Arys
    Dim nr As DataRow = DataTables("表B").AddNew
    nr("日期") = Ary(0)
    nr("摘要") = Ary(1)
Next
For Each dr As DataRow In DataTables("表B").datarows
    Dim flt As String = "日期 = #"& dr("日期") &"# And 摘要 = \'"& dr("摘要") &"\'"
    dr("期初") = DataTables("表A").Compute("sum(数量)",flt)
    dr("入库") = DataTables("表A").Compute("sum(数量)",flt)
    dr("出库") = DataTables("表A").Compute("sum(数量)",flt)
Next

按照摘要和日期填充的表B,执行上述代码后为什么每行的期初,入库,出库都填充同样的数据呢,不应该是这样的呀


--  作者:狐狸爸爸
--  发布时间:2011/11/16 16:27:00
--  

呵呵,你加粗的部分,代码完全一样,得到的结果当然应该一样才对的:

 

dr("期初") = DataTables("表A").Compute("sum(数量)",flt)
dr("入库") = DataTables("表A").Compute("sum(数量)",flt)
dr("出库") = DataTables("表A").Compute("sum(数量)",flt)


--  作者:唐尸三摆手
--  发布时间:2011/11/16 16:36:00
--  
但是对于每一行
Dim flt As String = "日期 = #"& dr("日期") &"# And 摘要 = \'"& dr("摘要") &"\'"
这段合成的条件不应该是一样的结果吧
[此贴子已经被作者于2011-11-16 16:36:03编辑过]

--  作者:唐尸三摆手
--  发布时间:2011/11/16 16:42:00
--  
呵呵,是我这边的问题,有点乱啊,已经找到问题的所在了
Select Case e.DataCol.Name
    Case "日期","摘要"
        Dim dr As DataRow = e.DataRow
        Dim flt As String = "日期 = #"& dr("日期") &"# And 摘要 = \'"& dr("摘要") &"\'"
        If dr("摘要") = "0" Then
            dr("期初") = DataTables("表A").Compute("sum(数量)",flt)
        Else If dr("摘要") = "1" Then
            dr("入库") = DataTables("表A").Compute("sum(数量)",flt)
        Else If dr("摘要") = "2" Then
            dr("出库") = DataTables("表A").Compute("sum(数量)",flt)
        End If
End Select

判断一下就OK了
[此贴子已经被作者于2011-11-16 16:52:22编辑过]

--  作者:czy
--  发布时间:2011/11/16 16:56:00
--  
DataTables("表B").datarows.clear
Dim Arys As List(Of String()) = DataTables("表A").GetUniqueValues("","日期","摘要")
For Each Ary As String() In Arys
    Dim nr As DataRow = DataTables("表B").AddNew
    nr("日期") = Ary(0)
    nr("摘要") = Ary(1)
    nr(Ary(1)) = DataTables("表A").Compute("sum(数量)","日期 = #" & Ary(0) & "# And 摘要 = \'" & Ary(1) & "\'")
Next

--  作者:czy
--  发布时间:2011/11/16 17:03:00
--  
呵呵,楼上的回复不一定对,因为手头没开发版不知道摘要中是否这三个项目。