以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  代码纠错(新年好)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=145554)

--  作者:lisangyu
--  发布时间:2020/1/30 10:04:00
--  代码纠错(新年好)
Select Case e.DataCol.Name
    Case "审批结果1","审批人1","审批结果2","审批人2","审批结果3","审批人3","审批结果4","审批人4","审批结果5","审批人5","审批人6","审批日期6","审批日期7","审批人7","维修厂"
        Dim dr As DataRow = e.DataRow
        If dr("所属部门") <> "行政管理部"
            If dr.IsNull("审批结果1") = False AndAlso dr.IsNull("审批人1") = False Then
                e.DataRow("进度") = "2A"
                If dr.IsNull("审批结果2") = False AndAlso dr.IsNull("审批人2") = False Then
                    e.DataRow("进度") = "3A"
                    If dr.IsNull("审批结果3") = False AndAlso dr.IsNull("审批人3") = False Then
                        e.DataRow("进度") = "4A"
                        If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then
                            e.DataRow("进度") = "5A"
                            If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
                                If User.IsRole(dr("维修厂")) Then
                                    e.DataRow("进度") = "6A"
                                Else
                                    e.DataRow("进度") = "7A"
                                End If
                                If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
                                    e.DataRow("进度") = "7A"
                                        If dr.IsNull("审批人7") = False AndAlso dr.IsNull("审批日期7") = False Then
                                    e.DataRow("进度") = "8A"
                                   
                                    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
                e.DataRow("进度") = "4A"
               
                If dr.IsNull("审批结果4") = False AndAlso dr.IsNull("审批人4") = False Then
                    e.DataRow("进度") = "5A"
                    If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
                        If User.IsRole(dr("维修厂")) Then
                            e.DataRow("进度") = "6A"

                        Else
                            e.DataRow("进度") = "7A"
                        End If
                        If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
                            e.DataRow("进度") = "7A"
                             If dr.IsNull("审批人7") = False AndAlso dr.IsNull("审批日期7") = False Then
                                    e.DataRow("进度") = "8A"

                            End If
                        End If
                    End If
                End If
            End If
        End If
End Select
审批人和审批时间为系统自动填充,打开就自动填充;审批结果为手动选择。
1、流程走到红色部分就自动跳过了,进度不论什么条件自动执行ELSE下面的代码进度变为"7A"。当我选择字段“维修厂”的为系统设置好的“修理厂审核员”角色时,还是会跳过红色部分, User.IsRole(dr("维修厂")) 好像有点问题,麻烦指定点一下。
2、紫色部分代码也没有执行,即便"审批人7""审批日期7"有审批记录了



--  作者:有点蓝
--  发布时间:2020/1/30 10:16:00
--  


                    If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
msgbox(dr("维修厂")) \'这里显示什么内容?
                        If User.IsRole(dr("维修厂")) Then
                            e.DataRow("进度") = "6A"

                        Else
                            e.DataRow("进度") = "7A"
                        End If
msgbox(dr.IsNull("审批人6")) \'这里显示什么内容?
msgbox(dr.IsNull("审批日期6")) \'这里显示什么内容?
                        If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
                            e.DataRow("进度") = "7A"
msgbox(dr.IsNull("审批人7")) \'这里显示什么内容?
msgbox(dr.IsNull("审批日期7")) \'这里显示什么内容?
                             If dr.IsNull("审批人7") = False AndAlso dr.IsNull("审批日期7") = False Then
                                    e.DataRow("进度") = "8A"

                            End If
                        End If
                    End If

--  作者:lisangyu
--  发布时间:2020/1/30 11:15:00
--  
没有任何反应,上面的代码时写在表属性datacolchanged,
--  作者:lisangyu
--  发布时间:2020/1/30 11:15:00
--  
                            If dr.IsNull("审批结果5") = False AndAlso dr.IsNull("审批人5") = False
                                If User.IsRole(dr("维修厂")) Then
                                    e.DataRow("进度") = "6A"
                                Else
msgbox(dr.IsNull("审批人6")) \'这里显示什么内容?
msgbox(dr.IsNull("审批日期6")) \'这里显示什么内容?
                                    e.DataRow("进度") = "7A"
                                End If
                                If dr.IsNull("审批人6") = False AndAlso dr.IsNull("审批日期6") = False Then
msgbox(dr.IsNull("审批人7")) \'这里显示什么内容?
msgbox(dr.IsNull("审批日期7")) \'这里显示什么内容?
                                    e.DataRow("进度") = "7A" 

我改成这样也没有反应,但是进度却变成7A
[此贴子已经被作者于2020/1/30 11:15:36编辑过]

--  作者:有点蓝
--  发布时间:2020/1/30 11:46:00
--  
说明dr("所属部门") <> "行政管理部",代码不会进入后面的else代码里面
--  作者:lisangyu
--  发布时间:2020/1/30 12:00:00
--  
If User.IsRole(dr("维修厂")) Then
                                    e.DataRow("进度") = "6A"

这个代码有问题,始终条件不满足,跳到else了。

--  作者:有点蓝
--  发布时间:2020/1/30 13:20:00
--  
看2楼

msgbox(dr("维修厂")) \'这里显示什么内容?

--  作者:lisangyu
--  发布时间:2020/1/30 16:50:00
--  
弹出2次窗口,分别显示修理厂的字段名称以及ture
--  作者:有点蓝
--  发布时间:2020/1/30 16:57:00
--  
当前用户有这个修理厂名称的角色吗?
--  作者:lisangyu
--  发布时间:2020/1/30 17:14:00
--  
蓝老师,我找到原因了,这是我自己的问题,我之前没有表述清楚。
1、我之前上上个帖子想表达的是:当用户点击“维修厂”这个字段选择任意一个下拉选项名,当这个选项在系统里属于角色修理厂审核员时,将进度改成\'6A\'.但是If User.IsRole(dr("维修厂")) Then
                            e.DataRow("进度") = "6A"有问题,老是跳过了。这个还请蓝老师指点。
2、("审批人6") 、("审批日期6") ,为当前用户自动填充的字段,根据蓝老师指导的判断代码错误的方法,发现该字段没有填充,弹出的也是ture,说明不能用该字段作为条件,如上面写的,要改成人工手输入的字段(“审批结果”)才行。