Rss & SiteMap
Foxtable(狐表) http://www.foxtable.com
一段代码,提取上个月月底的累计兑现列的值,代码运行出错,请各位老师指教如何修改代码,谢谢!!
代码如下:
'绩效奖_累计已兑_DataColChanged
Select Case e.DataCol.Name
Case "日期","单位","绩效奖_累计兑现","核算标准"
Dim dr As DataRow = e.DataRow
Dim mydate As Date = dr("日期")
Dim y As Integer = mydate.Year
Dim m As Integer = mydate.Month
If m <> 1 Then
Dim m1 As Integer = m - 1
Dim Days As Integer = Date.DaysInMonth(y,m1)
Dim syd As Date = New Date(y,m1,Days) '上月月底日期
If dr.IsNull("日期") OrElse dr.IsNull("单位") OrElse dr("绩效奖_累计兑现") = 0 Then
dr("绩效奖_累计已兑") = 0
Else
dr("绩效奖_累计已兑") = " '" & dr("绩效奖_累计兑现") & "' And 单位 = '" & dr("单位") & "'And 日期 =# '" & syd & "'#"
End If
dr("绩效奖_累计已兑") = 0
End If
End Select
dr("绩效奖_累计兑现") 把这句转成字符串
CStr(dr("绩效奖_累计兑现") )
老师不敢当,同在论坛学习,也许我是瞎指点
CStr(dr("绩效奖_累计兑现") ) 这是一个值不能给他赋值了
应该是
DataTables("表名").Current("绩效奖_累计兑现") = 表达式值
问题在这行:
dr("绩效奖_累计已兑") = " '" & dr("绩效奖_累计兑现") & "' And 单位 = '" & dr("单位") & "'And 日期 =# '" & syd & "'#"
dr("绩效奖_累计已兑")应该只接受数值的,可以你现在是将一个字符串赋值给他,当然出错的。
应该用Compute计算一个值再赋值:
http://www.foxtable.com/help/topics/0393.htm
为什么不会呢? 不就是find出符合条件的行吗?
Select Case e.DataCol.Name
Case "日期","单位"
Dim dr As DataRow = e.DataRow
If dr.IsNull("日期") OrElse dr.IsNull("单位") OrElse dr("绩效奖_累计兑现") = 0 Then
dr("绩效奖_累计已兑") = 0
Else
Dim mydate As Date = dr("日期")
If mydate.month = 1 Then
dr("绩效奖_累计已兑") = 0
Else
mydate= mydate.AddMonths(-1)
mydate = New Date(mydate.year,mydate.month,Date.DaysInMonth(mydate.Year,mydate.month))
Dim dr1 As DataRow = e.DataTable.Find("单位 = '" & dr("单位") & "'And 日期 =# '" & mydate & "'#")
If dr1 IsNot Nothing Then
dr("绩效奖_累计已兑") = dr1("绩效奖_累计兑现")
Else
dr("绩效奖_累计已兑") = 0
End If
End If
End If
End Select