以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 如何通过代码逐级汇总和限制非末级录入数据? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=159457) |
-- 作者:爱相随 -- 发布时间:2020/12/27 14:09:00 -- 如何通过代码逐级汇总和限制非末级录入数据? 比如在会计科目中,如何实现同一数据表中1002科目自动汇总100201和100202科目的数据?如何限制1002科目直接录入数据?? |
-- 作者:chnfo -- 发布时间:2020/12/27 16:58:00 -- 假定 1、要汇总的列为V,财务科目列为C 2、会计科目是有规则的,例如每2位为一个层级 在datacolchanged事件中 select case e.datacol.name case "V" dim s as string = e.datarow(“C”) \'先找到当前财务科目的所有上级 dim dic as new dictionary(of datarow,double) for i as integer = 0 to s.length - 1 step 2 dim x as string = s.substring(i,2) dim r as datarow = e.datatable.find("C = \'" & x &“‘”) if r isnot nothing then dic.add(r,r("V") + e.newvalue - e.oldvalue) end if next systemready = false for each dr as datarow in dic.keys dr("V") = dic(dr) next systemready = true end select 如果要禁止在科目的父节点输入数值,可以在PrepareEdit事件中 select case e.col.name case "V" dim dr as datarow = e.table.datatable.find("C like \'" & e.row("C") & "%\'") if dr isnot nothing then e.cancel = true end if end select [此贴子已经被作者于2020/12/27 17:13:03编辑过]
|
-- 作者:爱相随 -- 发布时间:2020/12/29 8:31:00 -- 谢谢老师,太感谢,无以言表!!祝您新年快乐!! |