Foxtable(狐表)用户栏目专家坐堂 → 代码优化


  共有2069人关注过本帖树形打印复制链接

主题:代码优化

帅哥哟,离线,有人找我吗?
lisangyu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4277 威望:0 精华:0 注册:2019/8/5 17:49:00
代码优化  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1265 积分:7838 威望:0 精华:4 注册:2017/12/31 14:53:00
  发帖心情 Post By:2020/3/23 15:22:00 [只看该作者]

思路就是把审批步骤、审批日志,与车辆表,解耦

1“①车辆表”,就一个流程状态的列,去掉那堆超级冗余的审批A、审批B、审批C字段
2新建一个“②审批步骤设计表”,专门记录有什么步骤,和他们的前后顺序。
3新建一个“③审批日志表”,单独记录业务单据的流程、审批人、审批时间、审批备注。

4车辆表要审批了,就从②审批步骤表,判断下一步要到哪里。判断成功后,把审批记录写到③审批日志表

这样你会发现:
业务表→审批步骤表→审批日志表。终于解耦

这样你会发现,将来你还有入库单,出库单,车辆表,他们的流程步骤,全部统一在审批步骤表维护,然后日志统一在审批日志表查看。你再也不用写流程控制代码!!!
只需要无脑在审批步骤表里加东西即可!!管它4步还是100步,代码不用重写。


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

按照你目前目前的车辆表结构,无论你代码怎么优化,你都会发现当单据回滚再重新审核时,你压根没有字段可以记录上次审核的时间和经手人,只能不断覆盖这个字段

[此贴子已经被作者于2020/3/23 15:26:18编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lisangyu
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:461 积分:4277 威望:0 精华:0 注册:2019/8/5 17:49:00
  发帖心情 Post By:2020/3/24 14:14:00 [只看该作者]

杰哥,你说太棒了,我的确在构思怎么做流程操作记录,退回后,无法保存审批记录,杰哥能不能做个简单的实例?你的界面好像是网页的?挺好看的

 回到顶部