以文本方式查看主题

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

--  作者:江南小镇
--  发布时间:2022/2/10 15:46:00
--  [求助]统计
老师新年好
      下面中奖金额列不显示



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



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




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

--  作者:有点蓝
--  发布时间:2022/2/10 15:52:00
--  
不想显示中奖金额列?

Tables("打piao记录_Table1").DataSource = dtb.BuildDataSource()
Tables("打piao记录_Table1").cols("中奖金额").visible = false

--  作者:江南小镇
--  发布时间:2022/2/10 16:03:00
--  
不,我要显示中奖金额列,上面的代码不显示。
--  作者:有点蓝
--  发布时间:2022/2/10 16:09:00
--  
没看到有隐藏列的代码,肯定是显示的。如果是指这个列没有统计值,应该是没有符合条件的数据
--  作者:江南小镇
--  发布时间:2022/2/10 16:18:00
--  
临时表是显示的窗口表不显示,这是全部代码。
Dim dtb As New DataTableBuilder("统计")
dtb.AddDef("姓名", Gettype(String), 16)
dtb.AddDef("项目", Gettype(String), 16)
dtb.AddDef("购票金额", Gettype(Integer))
dtb.AddDef("付款金额", Gettype(Integer))
dtb.AddDef("中奖金额", Gettype(Integer))



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




dtb.Build()
Tables("打票记录_Table1").DataSource = dtb.BuildDataSource()
For Each nm() As String In DataTables("打票收付款记录").GetValues("姓名|项目")
    
    Dim dr As DataRow = DataTables("打票记录_Table1").AddNew()
    \'Dim dr As DataRow = DataTables("统计").AddNew()
    dr("姓名") = nm(0)
    dr("项目") = nm(1)
    \'dr("") = nm(2)
    dr("购票金额") = DataTables("打票收付款记录").Compute("Sum(购票金额)","姓名 = \'" & nm(0) & "\' And [项目] = \'" & nm(1) & "\'")
    dr("付款金额") = DataTables("打票收付款记录").Compute("Sum(付款金额)","姓名 = \'" & nm(0) & "\' And [项目] = \'" & nm(1) & "\'")
   dr("中奖金额") = DataTables("打票收付款记录").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("打票记录_table1").SetColVisibleWidth ("姓名|260|项目|120|购票金额|70|付款金额|100|中奖金额")
Tables("打票记录_table1").DefaultRowHeight = 30
For Each c As Col In Tables("打票记录_table1").Cols
    C.TextAlign  =TextAlignEnum.Center
Next
Tables("打票记录_table1").grid.Styles("Normal").border.Color = Color.DodgerBlue
Tables("打票记录_table1").Font = New Font("微软雅体",12,FontStyle.Regular)
Tables("打票记录_table1").ListMode = True                     \'整行突出


Tables("打票记录_table1").Cols("购票金额").GrandTotal = True \'指定要合计的列
Tables("打票记录_table1").Cols("中奖金额").GrandTotal = True \'指定要合计的列
\'Tables("订单").Cols("金额").GrandTotal = True
Tables("打票记录_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

--  作者:有点蓝
--  发布时间:2022/2/10 16:19:00
--  
Tables("打piao记录_table1").SetColVisibleWidth ("姓名|260|项目|120|购piao金额|70|付款金额|100|中奖金额|100")
--  作者:江南小镇
--  发布时间:2022/2/10 17:00:00
--  
谢谢老师

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

--  作者:有点蓝
--  发布时间:2022/2/10 17:04:00
--  
方法1、到datacolchanged事件处理
--  作者:江南小镇
--  发布时间: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("购票金额", Gettype(Integer))
dtb.AddDef("付款金额", Gettype(Integer))
dtb.AddDef("中奖金额", Gettype(Integer))
dtb.AddDef("结欠金额", Gettype(Integer))

dtb.Build()
Tables("打票记录_Table1").DataSource = dtb.BuildDataSource()
For Each nm() As String In DataTables("打票收付款记录").GetValues("姓名|项目")
    
    Dim dr As DataRow = DataTables("打票记录_Table1").AddNew()
    \'Dim dr As DataRow = DataTables("统计").AddNew()
    dr("姓名") = nm(0)
    dr("项目") = nm(1)
    \'dr("") = nm(2)
    dr("购票金额") = DataTables("打票收付款记录").Compute("Sum(购票金额)","姓名 = \'" & nm(0) & "\' And [项目] = \'" & nm(1) & "\'")
    dr("付款金额") = DataTables("打票收付款记录").Compute("Sum(付款金额)","姓名 = \'" & nm(0) & "\' And [项目] = \'" & nm(1) & "\'")
   dr("中奖金额") = DataTables("打票收付款记录").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("打票记录_table1").SetColVisibleWidth ("姓名|260|项目|120|购票金额|70|付款金额|100|中奖金额|100|结欠金额|100")
Tables("打票记录_table1").DefaultRowHeight = 30
For Each c As Col In Tables("打票记录_table1").Cols
    C.TextAlign  =TextAlignEnum.Center
Next





--  作者:有点蓝
--  发布时间:2022/2/10 20:28:00
--  
如果是指datacolchanged事件,参考:http://www.foxtable.com/webhelp/topics/1452.htm

Dim dr As DataRow = e.DataRow
Select
 Case e.DataCol.Name
    Case "
付款金额","......
        dr(
"总分") = dr("
购piao金额") - dr("付款金额") - .........
End
 
Select