以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 初始数的科目汇总 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=166144) |
-- 作者:采菊东篱下 -- 发布时间:2021/5/20 15:26:00 -- 初始数的科目汇总 此主题相关图片如下:qq图片20210520144832.png 初始数是手工输入的,要求逐级汇总科目初始金额,科目代码由逐级添加4位数区别科目级数,最后添加一行合并科目代码列与科目名称列单元格,在初始余额列汇总所有一级科目初始余额,我这样写,红色标注代码报错:
[此贴子已经被作者于2021/5/20 15:30:59编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/20 15:37:00 -- 代码放在什么事件里的? 不同事件有不同的e参数,不要随便用
|
-- 作者:采菊东篱下 -- 发布时间:2021/5/20 16:52:00 -- 在Tables("初始数据_Table1")的AfterLoad事件写入下面的代码,在窗口的Table1中加载资产表: Tables("初始数据_Table1").Fill("Select * Fro m {资产}",False) With Tables("初始数据_Table1") .SetColVisibleWidth("科目代码|110|科目名称|130|借或贷|50|初始数量|70|初始余额|70") End With 在Tables("初始数据_Table1")的DataColChanged事件写入下面的代码能保存,但并没添加行: With DataTables("初始数据_Table1") Dim km As String = e.DataRow("科目代码") For i1 As Integer = (km.Length / 4) - 1 To 1 Dim c1 As Integer = 4 * i1 Dim dr1 As DataRow = .find("[科目代码] Like \'" & e.DataRow("科目代码").SubString(0,c1) & "%\' And [科目代码] <> \'" & e.DataRow("科目代码").SubString(0,c1) & "%\'") If (e.DataCol.Name = "科目代码" OrElse e.DataCol.Name = "科目名称") AndAlso "[科目代码] Like \'" & e.DataRow("科目代码").SubString(0,c1) & "%\' And [科目代码] <> \'" & e.DataRow("科目代码").SubString(0,c1) & "%\'" Then e.Cancel = True \'取消编辑 Else dr1("借或贷") = "借" dr1("初始余额") = .Compute("Sum(初始余额)", "[科目代码] Like \'" & e.DataRow("科目代码").SubString(0,c1) & "%\' And [科目代码] <> \'" & e.DataRow("科目代码").SubString(0,c1) & "%\'") End If Next Dim rt1 As DataRow = .AddNew() rt1("科目代码") = "资产总计" rt1("借或贷") = "借" rt1("初始余额") = .Compute("Sum(初始余额)", "[科目代码] = \'" & e.DataRow("科目代码").SubString(0,4) & "%\'") .DataCols("初始数量").SetFormat("#,###.##") .DataCols("初始余额").SetFormat("#,###.##") End With 在Tables("初始数据_Table1")的DrawCell事件中写入下面代码报错: Dim zc As WinForm.Table = e.Form.Controls("Table1") Dim tb1 As Table = zc.Table tb1.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom Dim rng As C1.Win.C1FlexGrid.CellRange = tb1.Grid.GetCellRange(tb1.Row.count -1, 0, tb1.Row.count -1, 1) tb1.Grid.MergedRanges.Add(rng) [此贴子已经被作者于2021/5/20 16:53:19编辑过]
|
-- 作者:有点蓝 -- 发布时间:2021/5/20 17:15:00 -- 第1、3段代码可以放到窗口afterload事件,但是不能放到表事件处理。 第2段代码感觉就是,找来几条衣服,剪碎,随便找些碎片用胶布粘成一件新的衣服。就是随便找来一些代码堆到一起,至于可以干什么,看不懂
|
-- 作者:采菊东篱下 -- 发布时间:2021/5/20 17:25:00 -- 此主题相关图片如下:qq图片20210520172053.png 这段代码写在AfterLoad事件中报错
Dim zc As WinForm.Table = e.Form.Controls("Table1") Dim tb1 As Table = zc.Table tb1.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom Dim rng As C1.Win.C1FlexGrid.CellRange = tb1.Grid.GetCellRange(tb1.Row.count -1, 0, tb1.Row.count -1, 1) tb1.Grid.MergedRanges.Add(rng) |
-- 作者:有点蓝 -- 发布时间:2021/5/20 17:29:00 -- http://www.foxtable.com/webhelp/topics/1438.htm |
-- 作者:采菊东篱下 -- 发布时间:2021/5/20 17:35:00 -- 在Tables("初始数据_Table1")的DataColChanged事件写入下面的代码能保存,但并没添加行: With DataTables("初始数据_Table1") \'逐级统计初始余额 Dim km As String = e.DataRow("科目代码") For i1 As Integer = (km.Length / 4) - 1 To 1 Dim c1 As Integer = 4 * i1 Dim dr1 As DataRow = .find("[科目代码] Like \'" & e.DataRow("科目代码").SubString(0,c1) & "%\' And [科目代码] <> \'" & e.DataRow("科目代码").SubString(0,c1) & "%\'") If (e.DataCol.Name = "科目代码" OrElse e.DataCol.Name = "科目名称") AndAlso "[科目代码] Like \'" & e.DataRow("科目代码").SubString(0,c1) & "%\' And [科目代码] <> \'" & e.DataRow("科目代码").SubString(0,c1) & "%\'" Then e.Cancel = True \'取消编辑 Else dr1("借或贷") = "借" dr1("初始余额") = .Compute("Sum(初始余额)", "[科目代码] Like \'" & e.DataRow("科目代码").SubString(0,c1) & "%\' And [科目代码] <> \'" & e.DataRow("科目代码").SubString(0,c1) & "%\'") End If Next Dim rt1 As DataRow = .AddNew() \'添加一行用来统计一级科目余额,它是汇总行,故科目代码这行的单元格自动显示为资产总计,因为用统计方式写这行,初始数据不能手工输入,且数据不是直接统计,而是只统计一级科目,所以不能用统计模式,只能手工编写代码。 rt1("科目代码") = "资产总计" rt1("借或贷") = "借" rt1("初始余额") = .Compute("Sum(初始余额)", "[科目代码] = \'" & e.DataRow("科目代码").SubString(0,4) & "%\'") \'统计一级科目余额 .DataCols("初始数量").SetFormat("#,###.##") \'千位分隔符,保留2位小数 .DataCols("初始余额").SetFormat("#,###.##") End With |
-- 作者:采菊东篱下 -- 发布时间:2021/5/20 17:50:00 -- 这段代码写在AfterLoad事件中报错 Dim zc As WinForm.Table = e.Form.Controls("Table1") Dim tb1 As Table = zc.Table tb1.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom Dim rng As C1.Win.C1FlexGrid.CellRange = tb1.Grid.GetCellRange(tb1.Row.count -1, 0, tb1.Row.count -1, 1) tb1.Grid.MergedRanges.Add(rng) 这段代码是合并Tables("初始数据_Table1")新添一行的科目代码、科目名称列的单元格的,Grid只对Table有效,错在哪我无从入手,合并单元格的内容我了一天帮助了,不想做到表的打印设显示中,效果直接在table中显示,我看了好久了,不知怎么实现。 |
-- 作者:采菊东篱下 -- 发布时间:2021/5/20 17:50:00 -- 你给我看的连接不明什么作用。 |
-- 作者:采菊东篱下 -- 发布时间:2021/5/20 18:23:00 -- Dim zc As WinForm.Table = e.Form.Controls("Table1") Dim tb1 As Table = zc.Table tb1.Grid.AllowMerging = C1.Win.C1FlexGrid.AllowMergingEnum.Custom Dim rng As C1.Win.C1FlexGrid.CellRange = tb1.Grid.GetCellRange(tb1.Rows.count -1, 0, tb1.Rows.count -1, 1) tb1.Grid.MergedRanges.Add(rng) 这段代码不报错了。 |