以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  统计  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=80973)

--  作者:gcc123
--  发布时间:2016/2/15 13:30:00
--  统计


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

表A中张三有两个数据

表A代码

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

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

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

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

 


--  作者:大红袍
--  发布时间:2016/2/15 14:11:00
--  
If e.DataCol.Name = "金额" Then
    Dim pr As DataRow
    pr = DataTables("表E").Find("姓名 = \'" & e.DataRow("姓名") & "\'")
    If pr IsNot Nothing Then
        pr("表A金额")= DataTables("表A").Compute("Sum(金额)","[姓名] = \'" & e.DataRow("姓名") & "\'")
    End If
End If

--  作者:gcc123
--  发布时间:2016/2/15 15:13:00
--  回复:(大红袍)If e.DataCol.Name = "金额" Then&nb...

1.录入表A B C D 数据时自动生成的表E.  在ABCD四个表中增加或减少数据,表E能否自动跟着增加或减少?

2.点击查询按钮表ABCD 跟着变化,表E是否也能在筛选条件下自动跟着变化?

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


--  作者:大红袍
--  发布时间:2016/2/15 15:22:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1 (1).table


--  作者:gcc123
--  发布时间:2016/2/15 17:02:00
--  回复:(大红袍)[upload=table,管理项目1 (1).table]...

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:实验2 (1).table

1.点击查询按钮,如果表E中某一列某一行没有数据,能否自动填充为 0 ?

2.按日期查询时,某人在表A中有数据 在BCD中都没有数据,表E中竟然出现了BCD表中的数据?

 


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


 


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

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

 

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:实验2 (1).table


--  作者:gcc123
--  发布时间:2016/2/15 17:35:00
--  回复:(大红袍) [upload=table,实验2 (1).tabl...
谢谢
--  作者:gcc123
--  发布时间:2016/2/16 10:42:00
--  回复:(大红袍) [upload=table,实验2 (1).tabl...
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:实验3.table

我把表ABCD 中姓名列都区分开,金额列都改成表达式列,在表E中不运算了
--  作者:大红袍
--  发布时间:2016/2/16 10:58:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:实验3.table


--  作者:gcc123
--  发布时间:2016/2/16 12:38:00
--  回复:(大红袍)[upload=table,实验3.table]viewFile...

Dim Filter As String = "1=1"
With e.Form.Controls("开始时间")
    If .Value IsNot Nothing Then
        Filter = Filter & " and 日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("姓名")
    If .Value IsNot Nothing Then
        Filter = Filter & " and 姓名 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("结束时间")
    If .Value IsNot Nothing Then
        Filter = Filter & " and 日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("应收查询").Filter = Filter.replace("姓名", "托运单位")
    Tables("扣款录入").Filter = Filter.replace("姓名", "欠款人")
    Tables("已收款录入").Filter = Filter.replace("姓名", "交款单位")
    Tables("应付查询").Filter = Filter.replace("姓名", "承运单位")
End If

Dim dt As DataTable = DataTables("综合查询")
dt.DataRows.Clear
Dim tbs() As String = {"应收查询", "扣款录入", "已收款录入", "应付查询"}
For i As Integer = 1 To tbs.length
    Dim tb = tbs(i-1)
    For Each xm As String In DataTables(tb).GetValues("姓名" & i, Tables(tb).Filter & " and 姓名" & i & " 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(金额" & i & ")", "姓名" & i & " = \'" & xm & "\' and " & Tables(tb).Filter)
        If fdr.Isnull(tb & "金额") Then fdr(tb & "金额") = 0
    Next
Next

 

 


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

应收查询 和 应付查询 都是查询表,不影响吧?原始代码如下:

Dim Filter As String = "1=1"
With e.Form.Controls("开始时间")
    If .Value IsNot Nothing Then
        Filter = Filter & " and 日期 >= #" & .Value & "#"
    End If
End With
With e.Form.Controls("姓名")
    If .Value IsNot Nothing Then
        Filter = Filter & " and 姓名 = \'" & .Value & "\'"
    End If
End With
With e.Form.Controls("结束时间")
    If .Value IsNot Nothing Then
        Filter = Filter & " and 日期 <= #" & .Value & "#"
    End If
End With
If Filter > "" Then
    Tables("表A").Filter = Filter.replace("姓名", "姓名1")
    Tables("表B").Filter = Filter.replace("姓名", "姓名2")
    Tables("表C").Filter = Filter.replace("姓名", "姓名3")
    Tables("表D").Filter = Filter.replace("姓名", "姓名4")
End If

Dim dt As DataTable = DataTables("表E")
dt.DataRows.Clear
Dim tbs() As String = {"表A", "表B", "表C", "表D"}
For i As Integer = 1 To tbs.length
    Dim tb = tbs(i-1)
    For Each xm As String In DataTables(tb).GetValues("姓名" & i, Tables(tb).Filter & " and 姓名" & i & " 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(金额" & i & ")", "姓名" & i & " = \'" & xm & "\' and " & Tables(tb).Filter)
        If fdr.Isnull(tb & "金额") Then fdr(tb & "金额") = 0
    Next
Next


 

[此贴子已经被作者于2016/2/16 12:38:59编辑过]