以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 代码优化 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=147755) |
-- 作者:lisangyu -- 发布时间:2020/3/23 15:13:00 -- 代码优化 Dim dr As Row = Tables("车辆维修申请表").Current If dr IsNot Nothing Then If dr("所属部门") <> "行政管理部" If dr.IsNull("审批结果1") = False AndAlso dr.IsNull("审批人1") = False Then dr("进度") = "2A" If dr.IsNull("审批结果2") = False AndAlso dr.IsNull("审批人2") = False Then dr("进度") = "3A" If dr.IsNull("审批结果3") = False AndAlso dr.IsNull("审批人3") = False Then dr("进度") = "4A" If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then dr("进度") = "5A" If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False Dim us As UserInfo = Users(dr("维修厂")) If us.IsRole("维修厂审核员") Then dr("进度") = "6A" Else dr("进度") = "7A" If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then dr("进度") = "8A" End If End If If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then dr("进度") = "7A" If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then dr("进度") = "8A" End If End If End If End If End If End If End If End If Else If dr.IsNull("审批结果1") = False AndAlso dr.IsNull("审批人1") = False Then dr("进度") = "4A" If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then dr("进度") = "5A" If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False Dim us As UserInfo = Users(dr("维修厂")) If us.IsRole("维修厂审核员") Then dr("进度") = "6A" Else dr("进度") = "7A" If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then dr("进度") = "8A" End If End If If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then dr("进度") = "7A" If dr.IsNull("审批人7") = False AndAlso dr.IsNull("维修金额") = False Then dr("进度") = "8A" End If End If End If End If End If End If e.Form.Close 蓝总:上面代码是流程审批进度变化。每次“进度”变成“5A”或者“6A”时,系统里进度都是从最低进度重新开始,2A-3A-4A-5A···,效率低,以上代码要怎么改,直接变成目标进度。例如再加上一个进度值:If dr.IsNull("审批结果3") = False AndAlso dr.IsNull("审批人3") = False andalso dr(“进度”)=“3A”Then dr("进度") = "4A",整个代码要怎么优化。麻烦蓝中指导下。
|
-- 作者:chen37280600 -- 发布时间:2020/3/23 15:22:00 -- 思路就是把审批步骤、审批日志,与车辆表,解耦。 1“①车辆表”,就一个流程状态的列,去掉那堆超级冗余的审批A、审批B、审批C字段 2新建一个“②审批步骤设计表”,专门记录有什么步骤,和他们的前后顺序。 3新建一个“③审批日志表”,单独记录业务单据的流程、审批人、审批时间、审批备注。 4车辆表要审批了,就从②审批步骤表,判断下一步要到哪里。判断成功后,把审批记录写到③审批日志表 这样你会发现: 业务表→审批步骤表→审批日志表。终于解耦 这样你会发现,将来你还有入库单,出库单,车辆表,他们的流程步骤,全部统一在审批步骤表维护,然后日志统一在审批日志表查看。你再也不用写流程控制代码!!! 只需要无脑在审批步骤表里加东西即可!!管它4步还是100步,代码不用重写。 按照你目前目前的车辆表结构,无论你代码怎么优化,你都会发现当单据回滚再重新审核时,你压根没有字段可以记录上次审核的时间和经手人,只能不断覆盖这个字段。 [此贴子已经被作者于2020/3/23 15:26:18编辑过]
|
-- 作者:lisangyu -- 发布时间:2020/3/24 14:14:00 -- 杰哥,你说太棒了,我的确在构思怎么做流程操作记录,退回后,无法保存审批记录,杰哥能不能做个简单的实例?你的界面好像是网页的?挺好看的 |