以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助] 急求代码 搞定(郁闷-这么简单的问题也要想这么久)  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=5730)

--  作者:舜风
--  发布时间:2010/1/7 0:09:00
--  [求助] 急求代码 搞定(郁闷-这么简单的问题也要想这么久)

问题一:

If e.DataCol.Name = "姓名" Then
If e.NewValue Is Nothing Then
e.DataRow("应发金额") = Nothing
Else
Dim dr As DataRow
dr = DataTables("奖金发放表").Find("[姓名] = \'" & e.DataRow("姓名") & "\'")
If dr IsNot Nothing and e.DataRow("发放日期") = "\'" & dr("发放日期") & "\'" Then
e.DataRow("应发金额") = dr("半年奖")
End If
End If
End If

答案:
If e.DataCol.Name = "姓名" Then
    If e.NewValue Is Nothing Then
        e.DataRow("应发金额") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("奖金发放表").Find("[姓名] = \'" & e.DataRow("姓名") & "\'")
        If dr IsNot Nothing Then
            If dr IsNot Nothing and e.DataRow("发放日期") = dr("发放日期") Then
                e.DataRow("应发金额") = dr("半年奖")
            End If
        End If
    End If
End If


另一问题:
Dim dr3 As DataRow = DataTables("工资表").Find("[姓名] = \'" & e.DataRow("姓名") & "\'")
If e.DataCol.Name = "实发金额" OrElse e.DataCol.Name = "发放日期" Then
If dr3 IsNot Nothing And e.DataRow("发放日期") = dr3("发放日期") then
dr3("半年奖") = e.DataRow("实发金额")
Else dr3("半年奖") = Nothing
End If
End If
End If

答案:
Dim dr3 As DataRow = DataTables("工资表").Find("[姓名] = \'" & e.DataRow("姓名") & "\'")
If e.DataCol.Name = "半年奖" OrElse e.DataCol.Name = "发放日期" Then
    If dr3 IsNot Nothing
        If dr3 IsNot Nothing And e.DataRow("发放日期") = dr3("发放日期") then
            dr3("应发金额") = e.DataRow("半年奖")
        Else dr3("应发金额") = Nothing
        End If
    End If
End If

[此贴子已经被作者于2010-1-7 10:06:56编辑过]

--  作者:blackzhu
--  发布时间:2010/1/7 7:33:00
--  

If e.DataCol.Name = "姓名" Then
    If e.Datarow.IsNull("姓名")  Then
        e.Datarow("应发金额") = DBNull.Value
    Else
        Dim dr As DataRow
        dr = DataTables("奖金发放表").Find("[姓名] = \'" & e.datarow("姓名") & "\'")
       
        If dr IsNot Nothing Then
            e.DataRow("应发金额") = dr("半年奖")
        end if
    end if
end if


   你试试吧,估计是FIND那部分少一个单引号.

--  作者:舜风
--  发布时间:2010/1/7 9:38:00
--  
以下是引用blackzhu在2010-1-7 7:33:00的发言:

If e.DataCol.Name = "姓名" Then
    If e.Datarow.IsNull("姓名")  Then
        e.Datarow("应发金额") = DBNull.Value
    Else
        Dim dr As DataRow
        dr = DataTables("奖金发放表").Find("[姓名] = \'" & e.datarow("姓名") & "\'")
       
        If dr IsNot Nothing Then
            e.DataRow("应发金额") = dr("半年奖")
        end if
    end if
end if


   你试试吧,估计是FIND那部分少一个单引号.

哦,少个单引号是我发帖时搞错了,或也可以dr = DataTables("奖金发放表").Find("[姓名] = \'" & e.NewValue & "\'")
但这些都不是问题关键,我是想条件 e.DataRow("发放日期") = dr("发放日期")  成立后才 e.DataRow("应发金额") = dr("半年奖")
因为奖金发放表会一直存在,如果没有这个条件,至下个月造表时,又会再一次导入半年奖图片点击可在新窗口打开查看