Foxtable(狐表)用户栏目专家坐堂 → [求助]统计


  共有3353人关注过本帖树形打印复制链接

主题:[求助]统计

帅哥哟,离线,有人找我吗?
江南小镇
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1712 积分:11426 威望:0 精华:0 注册:2015/6/22 8:11:00
[求助]统计  发帖心情 Post By:2022/2/10 15:46:00 [显示全部帖子]

老师新年好
      下面中奖金额列不显示



Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("项目", Gettype(String), 16)
dtb.AddDef("购piao金额", Gettype(Integer))
dtb.AddDef("付款金额", Gettype(Integer))
dtb.AddDef("中奖金额", Gettype(Integer))



'dtb.AddDef("购piao金额", Gettype(Integer))
'dtb.AddDef("付款金额", Gettype(Double))
'dtb.AddDef("中奖金额", Gettype(Double))




dtb.Build()
Tables("打piao记录_Table1").DataSource = dtb.BuildDataSource()
For Each nm() As String In DataTables("打piao收付款记录").GetValues("姓名|项目")
    
    Dim dr As DataRow = DataTables("打piao记录_Table1").AddNew()
    'Dim dr As DataRow = DataTables("统计").AddNew()
    dr("姓名") = nm(0)
    dr("项目") = nm(1)
    'dr("") = nm(2)
    dr("购piao金额") = DataTables("打piao收付款记录").Compute("Sum(购piao金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
    dr("付款金额") = DataTables("打piao收付款记录").Compute("Sum(付款金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
   dr("中奖金额") = DataTables("打piao收付款记录").Compute("Sum(中奖金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
Next

 回到顶部
帅哥哟,离线,有人找我吗?
江南小镇
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1712 积分:11426 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2022/2/10 16:03:00 [显示全部帖子]

不,我要显示中奖金额列,上面的代码不显示。

 回到顶部
帅哥哟,离线,有人找我吗?
江南小镇
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1712 积分:11426 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2022/2/10 16:18:00 [显示全部帖子]

临时表是显示的窗口表不显示,这是全部代码。
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("项目", Gettype(String), 16)
dtb.AddDef("购piao金额", Gettype(Integer))
dtb.AddDef("付款金额", Gettype(Integer))
dtb.AddDef("中奖金额", Gettype(Integer))



'dtb.AddDef("购piao金额", Gettype(Integer))
'dtb.AddDef("付款金额", Gettype(Double))
'dtb.AddDef("中奖金额", Gettype(Double))




dtb.Build()
Tables("打piao记录_Table1").DataSource = dtb.BuildDataSource()
For Each nm() As String In DataTables("打piao收付款记录").GetValues("姓名|项目")
    
    Dim dr As DataRow = DataTables("打piao记录_Table1").AddNew()
    'Dim dr As DataRow = DataTables("统计").AddNew()
    dr("姓名") = nm(0)
    dr("项目") = nm(1)
    'dr("") = nm(2)
    dr("购piao金额") = DataTables("打piao收付款记录").Compute("Sum(购piao金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
    dr("付款金额") = DataTables("打piao收付款记录").Compute("Sum(付款金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
   dr("中奖金额") = DataTables("打piao收付款记录").Compute("Sum(中奖金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
Next
'MainTable= Tables("统计")

With Tables(e.Form.Name & "_Table1")
    .EnterKeyActionDown = True
    .AutoSizeCols
    Dim dz_FilterCol As WinForm.CheckedComboBox = e.Form.Controls("复选1")
    dz_FilterCol.Items.Clear
    For Each C As Col In .Cols
        dz_FilterCol.Items.Add(C.Name)
    Next
    dz_FilterCol.Value = ""
End With



Tables("打piao记录_table1").SetColVisibleWidth ("姓名|260|项目|120|购piao金额|70|付款金额|100|中奖金额")
Tables("打piao记录_table1").DefaultRowHeight = 30
For Each c As Col In Tables("打piao记录_table1").Cols
    C.TextAlign  =TextAlignEnum.Center
Next
Tables("打piao记录_table1").grid.Styles("Normal").border.Color = Color.DodgerBlue
Tables("打piao记录_table1").Font = New Font("微软雅体",12,FontStyle.Regular)
Tables("打piao记录_table1").ListMode = True                     '整行突出


Tables("打piao记录_table1").Cols("购piao金额").GrandTotal = True '指定要合计的列
Tables("打piao记录_table1").Cols("中奖金额").GrandTotal = True '指定要合计的列
'Tables("订单").Cols("金额").GrandTotal = True
Tables("打piao记录_table1").GrandTotal = True '显示合计模式



Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
tab.SelectedIndex = 1
'msgbox(tab.tabpages(3).text)
e.form.controls("标签").text = e.form.controls("TabControl1").tabpages(1).text



e.Form.Controls("Panel2").TopMost= True
e.Form.Controls("Panel2").Visible= True
e.Form.Controls("Panel1").Visible= False

 回到顶部
帅哥哟,离线,有人找我吗?
江南小镇
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1712 积分:11426 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2022/2/10 17:00:00 [显示全部帖子]

谢谢老师

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

 回到顶部
帅哥哟,离线,有人找我吗?
江南小镇
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1712 积分:11426 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2022/2/10 18:26:00 [显示全部帖子]

以下是引用江南小镇在2022/2/10 17:00:00的发言:
谢谢老师

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

老师,我要在统计的临时表中计算

Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("项目", Gettype(String), 16)
dtb.AddDef("购piao金额", Gettype(Integer))
dtb.AddDef("付款金额", Gettype(Integer))
dtb.AddDef("中奖金额", Gettype(Integer))
dtb.AddDef("结欠金额", Gettype(Integer))

dtb.Build()
Tables("打piao记录_Table1").DataSource = dtb.BuildDataSource()
For Each nm() As String In DataTables("打piao收付款记录").GetValues("姓名|项目")
    
    Dim dr As DataRow = DataTables("打piao记录_Table1").AddNew()
    'Dim dr As DataRow = DataTables("统计").AddNew()
    dr("姓名") = nm(0)
    dr("项目") = nm(1)
    'dr("") = nm(2)
    dr("购piao金额") = DataTables("打piao收付款记录").Compute("Sum(购piao金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
    dr("付款金额") = DataTables("打piao收付款记录").Compute("Sum(付款金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")
   dr("中奖金额") = DataTables("打piao收付款记录").Compute("Sum(中奖金额)","姓名 = '" & nm(0) & "' And [项目] = '" & nm(1) & "'")

Next
'MainTable= Tables("统计")

With Tables(e.Form.Name & "_Table1")
    .EnterKeyActionDown = True
    .AutoSizeCols
    Dim dz_FilterCol As WinForm.CheckedComboBox = e.Form.Controls("复选1")
    dz_FilterCol.Items.Clear
    For Each C As Col In .Cols
        dz_FilterCol.Items.Add(C.Name)
    Next
    dz_FilterCol.Value = ""
End With



Tables("打piao记录_table1").SetColVisibleWidth ("姓名|260|项目|120|购piao金额|70|付款金额|100|中奖金额|100|结欠金额|100")
Tables("打piao记录_table1").DefaultRowHeight = 30
For Each c As Col In Tables("打piao记录_table1").Cols
    C.TextAlign  =TextAlignEnum.Center
Next





 回到顶部
帅哥哟,离线,有人找我吗?
江南小镇
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1712 积分:11426 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2022/2/11 12:35:00 [显示全部帖子]

老师好,下面代码标出的计算结果不正确。


Select Case e.DataCol.Name
    Case "姓名","购piao金额","中奖金额","付款金额"
        Dim drs As List(of DataRow)
        Dim Filter As String
        Filter = "[_Identify] >= " & e.DataRow("_Identify") & " And [姓名] = '" & e.DataRow("姓名") & "'"
        drs = e.DataTable.Select(Filter)
        
        For i As Integer = 0 To drs.Count - 1
            Dim dr = drs(i)
            If i = drs.Count - 1 Then
                Filter = "[_Identify] <= " & dr("_Identify") & " And [姓名] = '" & dr("姓名") & "'"
                Dim Val1 As Double = e.DataTable.Compute("Sum(购piao金额)",Filter)
                Dim Val2 As Double = e.DataTable.Compute("Sum(中奖金额)",Filter)
                Dim Val3 As Double = e.DataTable.Compute("Sum(付款金额)",Filter)
                
                dr("累计_购piao") = Val1
                dr("累计_中奖") = Val2
                dr("累计_付款") = Val3
            Else
                dr("累计_购piao") = Nothing
                dr("累计_中奖") = Nothing
                dr("累计_付款") = Nothing
            End If
        Next
        If e.DataCol.Name = "姓名" AndAlso e.OldValue IsNot Nothing AndAlso e.OldValue <> e.NewValue Then
            Filter = "[_Identify] > " & e.DataRow("_Identify") & " And [姓名] = '" & e.OldValue & "'"
            drs = e.DataTable.Select(Filter)
            For i As Integer = 0 To drs.Count - 1
                Dim dr = drs(i)
                If i = drs.Count - 1 Then
                    Filter = "[_Identify] <= " & dr("_Identify") & " And [姓名] = '" & dr("姓名") & "'"
                    Dim Val1 As Double = e.DataTable.Compute("Sum(购piao金额)",Filter)
                    Dim Val2 As Double = e.DataTable.Compute("Sum(中奖金额)",Filter)
                    Dim Val3 As Double = e.DataTable.Compute("Sum(付款金额)",Filter)
                    dr() = Val1
                    dr("累计_购piao") = Val2
                    dr("累计_中奖") = Val2
                    dr("累计_付款") = Val3
                Else
                    dr("累计_购piao") = Nothing
                    dr("累计_中奖") = Nothing
                    dr("累计_付款") = Nothing
                End If
            Next
        End If
        Dim dr2 As DataRow = e.DataTable.Find("姓名 is not null","[_Identify] desc")
        Dim V1 = e.DataTable.Compute("Sum(累计_购piao)","累计_购piao > 0")
        Dim V2 = e.DataTable.Compute("Sum(累计_中奖)","累计_中奖 > 0")
        Dim V3 = e.DataTable.Compute("Sum(累计_付款)","累计_付款 > 0")
        
        e.DataTable.ReplaceFor("累计_结欠", Nothing)
        dr2("累计_结欠") = V1 - V2 - V3
End Select

 回到顶部
帅哥哟,离线,有人找我吗?
江南小镇
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:七尾狐 帖子:1712 积分:11426 威望:0 精华:0 注册:2015/6/22 8:11:00
  发帖心情 Post By:2022/2/11 14:02:00 [显示全部帖子]


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

 回到顶部