以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 科目末级判断 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=179052) |
||||
-- 作者:wukangppbb -- 发布时间:2022/8/4 15:50:00 -- 科目末级判断 老师,这个判断末级的好像有点问题。没有实现真正的末级判断。 If e.DataCol.Name = "科目代码" Then If e.DataRow.IsNull("科目代码") Then e.DataRow("是否末级科目") = Nothing Else If e.DataTable.Find("科目代码 like \'" & e.DataRow("科目代码") & "%\' and 科目代码 <> \'" & e.DataRow("科目代码") & "\'") Is Nothing Then e.DataRow("是否末级科目") = "末级" Else e.DataRow("是否末级科目") = "非末级" End If End If End If 还有一种情况就是,现在的科目是“末级”属性,当我新增一条下级科目的时候,那么原先的“末级”科目应该变化为“非末级”,这个用“重置”按钮就可以了吗? |
||||
-- 作者:有点蓝 -- 发布时间:2022/8/4 16:26:00 -- 我测试没有问题, 请上传实例说明 |
||||
-- 作者:wukangppbb -- 发布时间:2022/8/4 21:30:00 -- 回复:(有点蓝)我测试没有问题, 请上传实例说明 有点像递归函数判断的问题,不是很懂。 效果如下: 1012
其他货币资金
非末级 101201
银行汇票
末级 101202
银行本票
末级 101203
信用卡
末级 101204
信用证保证金
末级 101205
外埠存款
末级 |
||||
-- 作者:有点蓝 -- 发布时间:2022/8/4 21:46:00 -- 测试没有问题。添加datacolchanged事件代码有,已有数据要重置一下列: 选中科目代码列,“日常工作”功能区“数据”功能组,单击下面的“重置列”按钮即可: |
||||
-- 作者:wukangppbb -- 发布时间:2022/8/4 22:56:00 -- 回复:(有点蓝)测试没有问题。添加datacolchanged事... 可以了,需要重置,每次新增一个科目层级都需要重置一下才能准确,这个在切换表的时候自动刷新的话,是不是要写在项目事件里面? |
||||
-- 作者:有点蓝 -- 发布时间:2022/8/4 23:25:00 -- 如果更改代码后对原有的上级自动刷新的话,参考:
|
||||
-- 作者:wukangppbb -- 发布时间:2022/8/5 15:22:00 -- 回复:(有点蓝)如果更改代码后对原有的上级自动刷新... 太难了这个。 If e.DataTable.Find("科目代码 like \'" & e.DataRow("科目代码") & "%\' and 科目代码 <> \'" & e.DataRow("科目代码") & "\'") Is Nothing Then Dim s As String = Left(e.NewValue, e.NewValue.length - 2) 这两句代码怎么理解的? |
||||
-- 作者:有点蓝 -- 发布时间:2022/8/5 16:33:00 -- If e.DataTable.Find("科目代码 like \'" & e.DataRow("科目代码") & "%\' and 科目代码 <> \'" & e.DataRow("科目代码") & "\'") Is Nothing Then 查找有没有以编辑数据的行(e.DataRow("科目代码"))的科目代码开头的科目代码,比如录入“01”。这句就是查询有没有“0101”,"010201"这种以01开头的编码。Is Nothing表示找不到,也就是没有以01开头的其它编码 Dim s As String = Left(e.NewValue, e.NewValue.length - 2)表示取单元格更改的数据去掉右边2个字符后的数据,比如,单元格输入“010203”,s变量就等于“0102”
|
||||
-- 作者:811233895 -- 发布时间:2022/8/5 19:42:00 -- 这种判断 会出Bug的! 第一个Bug: 比如 1012101 找到的上级科目是 10121 第二个Bug: 比如 如果科目表中存在101210 ,不能处理101210 1012101 之间的上下级关系
[此贴子已经被作者于2022/8/5 19:46:55编辑过]
|
||||
-- 作者:有点蓝 -- 发布时间:2022/8/6 8:57:00 -- 要保证代码的长度是一致的,子码比父码多2位。不然就改为使用like判断, |