以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80970)

--  作者:gcc123
--  发布时间:2016/2/15 11:17:00
--  [求助]

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

 

 想表达的是:表ABCD中的数据自动填入表E中,表E中按照人名自动将该人在某一表中的金额汇总,并且按照时间段,姓名能进行筛选


图片点击可在新窗口打开查看此主题相关图片如下:表e.png
图片点击可在新窗口打开查看


 

[此贴子已经被作者于2016/2/15 11:19:08编辑过]

--  作者:大红袍
--  发布时间:2016/2/15 11:26:00
--  
Dim dt As DataTable = DataTables("表E")
dt.DataRows.Clear
Dim tbs() As String = {"表A", "表B", "表C", "表D"}
For Each tb As String In tbs
    For Each xm As String In DataTables(tb).GetValues("姓名", "姓名 is not null")
        Dim fdr As DataRow = dt.Find("姓名 = \'" & xm & "\'")
        If fdr Is Nothing Then
            fdr = dt.AddNew
            fdr("姓名") = xm
        End If
        fdr(tb & "金额") = DataTables(tb).Compute("sum(金额)", "姓名 = \'" & xm & "\'")
    Next
Next

--  作者:大红袍
--  发布时间:2016/2/15 11:26:00
--  

合计的表达式要这样写

 

http://www.foxtable.com/help/topics/0602.htm

 


--  作者:gcc123
--  发布时间:2016/2/15 11:45:00
--  回复:(大红袍)Dim dt As DataTable = DataTables("...
这段代码加到哪里?另外表A中张三有两个数据,但是修改其中一个后表E中张三在表A中总额怎么不改变呢?
--  作者:大红袍
--  发布时间:2016/2/15 11:46:00
--  

 单独做一个按钮,统一计算。

 

 如果要实时修改,就去编写datacolchanged事件,参考 http://www.foxtable.com/help/topics/1472.htm

 


--  作者:gcc123
--  发布时间:2016/2/15 12:04:00
--  


图片点击可在新窗口打开查看此主题相关图片如下:表a.png
图片点击可在新窗口打开查看

代码为 If e.DataCol.Name = "金额" Then
    Dim pr As DataRow
    pr = DataTables("表E").Find("姓名 = \'" & e.DataRow("姓名") & "\'")
    If pr IsNot Nothing Then
        pr("金额")= pr("金额") + e.NewValue - e.OldValue
    End If
End If


图片点击可在新窗口打开查看此主题相关图片如下:表e.png
图片点击可在新窗口打开查看
代码为If e.DataCol.Name = "姓名" Then
    e.DataRow("表A金额") = DataTables("表E").Compute("Sum(表A金额)","[姓名] = \'" & e.NewValue & "\'")
End If

 

修改表A中的数据 出现运行错误


图片点击可在新窗口打开查看此主题相关图片如下:运行错误.png
图片点击可在新窗口打开查看

--  作者:gcc123
--  发布时间:2016/2/15 12:04:00
--  回复:(大红袍) 单独做一个按钮,统一计算。...


图片点击可在新窗口打开查看此主题相关图片如下:表a.png
图片点击可在新窗口打开查看

代码为 If e.DataCol.Name = "金额" Then
    Dim pr As DataRow
    pr = DataTables("表E").Find("姓名 = \'" & e.DataRow("姓名") & "\'")
    If pr IsNot Nothing Then
        pr("金额")= pr("金额") + e.NewValue - e.OldValue
    End If
End If


图片点击可在新窗口打开查看此主题相关图片如下:表e.png
图片点击可在新窗口打开查看
代码为If e.DataCol.Name = "姓名" Then
    e.DataRow("表A金额") = DataTables("表E").Compute("Sum(表A金额)","[姓名] = \'" & e.NewValue & "\'")
End If

 

修改表A中的数据 出现运行错误


图片点击可在新窗口打开查看此主题相关图片如下:运行错误.png
图片点击可在新窗口打开查看

--  作者:大红袍
--  发布时间:2016/2/15 12:07:00
--  

pr("金额")= pr("金额") + e.NewValue - e.OldValue

 

改成

 

pr("表A金额")= pr("表A金额") + e.NewValue - e.OldValue


--  作者:大红袍
--  发布时间:2016/2/15 12:08:00
--  

 e.DataRow("表A金额") = DataTables("表E").Compute("Sum(表A金额)","[姓名] = \'" & e.NewValue & "\'")

 

改成

 

 e.DataRow("表A金额") = DataTables("表A").Compute("Sum(金额)","[姓名] = \'" & e.NewValue & "\'")


--  作者:gcc123
--  发布时间:2016/2/15 12:26:00
--  回复:(大红袍) e.DataRow("表A金额") = DataT...


图片点击可在新窗口打开查看此主题相关图片如下:表a.png
图片点击可在新窗口打开查看

表A中张三有两个数据


 
图片点击可在新窗口打开查看此主题相关图片如下:表e.png
图片点击可在新窗口打开查看

表E中应该是表A中张三两个数据之和