C版您好,怎么我把代码放到项目里就不行,在示范文件里好好的,是不是项目数据太多。只要我一点重算列,就死机,我用开发板的示范文件也试了,正常。项目文件表的
DataColChanged代码如下:应该没有冲突呀
Dim dr As DataRow = e.DataRow
Dim dt As DataTable = DataTables("班组考勤")
Dim str As String = "日期 = '" & dr("日期") & "' And 姓名 = '" & dr("姓名") & "'"
if e.DataCol.Name = "日期" OrElse e.DataCol.Name = "姓名" Then
Dim r As DataRow = dt.Find(str)
if r IsNot Nothing Then
dr("班组考勤工时_出勤")=(dt.Compute("Sum(班组考勤工时_出勤)",str))
dr("班组考勤工时_请假")=(dt.Compute("Sum(班组考勤工时_请假)",str))
dr("班组考勤工时_旷工")=(dt.Compute("Sum(班组考勤工时_旷工)",str))
dr("考核_装夹工时") = (dt.Compute("Sum(考核_装夹工时)",str))
dr("考核_操作工时") = (dt.Compute("Sum(考核_操作工时)",str))
dr("考核_准结工时") = (dt.Compute("Sum(考核_准结工时)",str))
dr("考核_标准工时")=(dt.Compute("Sum(考核_标准工时)",str))
dr("考核_奖金")=(dt.Compute("Sum(考核_奖金)",str))
dr("工作用时")=(dt.Compute("Sum(工作用时)",str))
dr("工废损失")=(dt.Compute("Sum(工废损失)",str))
dr("准结补贴")=(dt.Compute("Sum(准结补贴)",str))
dr("工资")=(dt.Compute("Sum(工资)",str))
dr("产值")=(dt.Compute("Sum(产值)",str))
dr("奖金小计")=(dt.Compute("Sum(奖金小计)",str))
End If
End If
Select Case e.DataCol.Name
Case "考核_准结工时","考核_标准工时","工作用时"
dr("考核_效率")=(dr("考核_标准工时")+dr("考核_准结工时"))/dr("工作用时")
Case "主管考勤工时_出勤"
Select Case dr("主管考勤工时_出勤")
Case 0.1 To 8
Select Case dr("星期几")
Case 0
dr("加班工时") = dr("主管考勤工时_出勤")
dr("正班工时") = dr("主管考勤工时_出勤")
Case 1 To 6
dr("正班工时") = dr("主管考勤工时_出勤")
dr("加班工时") = Nothing
Case 8
dr("正班工时") = dr("主管考勤工时_出勤")
dr("加班工时") = dr("主管考勤工时_出勤")*2
End Select
Case 8.01 To 24
Select Case dr("星期几")
Case 0
dr("加班工时") = dr("主管考勤工时_出勤")*2-8
dr("正班工时") = "8"
Case 1 To 6
dr("加班工时") = (dr("主管考勤工时_出勤")-8)*1.5
dr("正班工时") = "8"
Case 8
dr("正班工时") = "8"
dr("加班工时") = dr("主管考勤工时_出勤")*3-8
End Select
End Select
End Select
If e.DataCol.Name = "确定" Then '如果是已结帐列的内容变动
If e.NewValue = True Then '而且变动后的值是True(已勾选)
e.DataRow.Locked = True '那么锁定此行
End If
End If
if e.datacol.name = "日期"
e.datarow("年月") = format(e.datarow("日期"),"yyyy年MM月")
e.datarow("日") = e.datarow("日期").day
Dim dr1 As DataRow = DataTables("基础表").Find("[节假日期] = '" & e.DataRow("日期") & "'")
If dr1 IsNot Nothing Then
e.DataRow("星期几") = "8"
Else
e.datarow("星期几") = e.datarow("日期").DayOfWeek
End If
end if
以前的代码运行都正常,加上以下这段就不行
Dim dt1 As DataTable = DataTables("主管考勤")
For Each dr2 As DataRow In dt1.DataRows
if dr2("星期几") = 0 Then
Dim d1 as Date = dr2("日期")
Dim Sum As Integer = dt1.Compute("Sum(主管考勤工时_请假)","姓名 = '" & dr2("姓名") & "' And 日期 >= #" & d1.AddDays(-6) & "# And 日期 <= #" & dr2("日期") & "#")
if Sum < 8 Then
dr2("节假日带薪工时") = 8
Else
dr2("节假日带薪工时") = Nothing
End If
Else
dr2("节假日带薪工时") = Nothing
End If
Next
[此贴子已经被作者于2010-3-25 15:15:35编辑过]