以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 多级条件判断  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=97025)

--  作者:积水成渊
--  发布时间:2017/3/4 11:43:00
--  [求助] 多级条件判断
表B有执行时间,执行状态,项目,新值,单据状态等字段,如果执行时间为当天,并且单据状态为 已审核,则判断项目的内容,如果项目的内容为基本工资,则将新值的数据复制到A的基本工资字段中,并且在B表的执行状态更改为已执行。下面是我写的代码,求大神改正:
Dim dt As Date = NOW()
 If e.DataCol.Name = "执行日期"  Then
    If e.DataRow("执行日期") = dt.Date Then
        If e.DataRow("单据状态") = "已审核" Then
            e.DataRow("执行状态")= "已执行"
              If e.DataRow("项目") = "基本工资" Then
                If e.DataCol.Name = "新值" Then
                   Dim Filter As String = "[工号] = \'" & e.DataRow("工号") & "\' "
                   DataTables("HR_人事档案").ReplaceFor("基本工资", e.NewValue, Filter)
                 End If
             End If
        End If
    End If
End If



--  作者:有点蓝
--  发布时间:2017/3/4 14:21:00
--  

Select Case e.DataCol.Name
    Case "执行日期","单据状态","项目"
        If e.DataRow("执行日期") = Date.Today AndAlso e.DataRow("单据状态") = "已审核" AndAlso e.DataRow("项目") = "基本工资" Then
            e.DataRow("执行状态")= "已执行"
            Dim Filter As String = "[工号] = \'" & e.DataRow("工号") & "\' "
            DataTables("HR_人事档案").ReplaceFor("基本工资", e.DataRow("新值"), Filter)
        End If
    End If
End Select

--  作者:积水成渊
--  发布时间:2017/3/4 14:45:00
--  
非常感谢,想了很久,终于出结果了
--  作者:积水成渊
--  发布时间:2017/3/4 14:51:00
--  
这是后面想出来的,没有老师的精炼


Dim dt As Date = NOW()

If e.DataCol.name = "单据状态" Then
   If e.DataRow("单据状态") = "已审核" Then 
      If e.DataRow("执行日期") = dt.Date Then
         e.DataRow("执行状态")= "已执行"
           Dim Filter As String = "[工号] = \'" & e.DataRow("工号") & "\' "
              DataTables("HR_人事档案").ReplaceFor("基本工资", e.DataRow("新值"), Filter)
            End If 
      End If 
End If