请问:如何实现从后台直接跨表引用数据,或是说从数据库直接引用数据?如有考勤表和工资表,打开项目时都没有加载数据,打开工资表时没能取到考勤表的出勤数据,等打开考勤表相对应的月份数据后才引用到,这是那里出错了?
If IsNumeric(e.NewValue) And Val(e.NewValue)=0 Then
e.DataRow(e.DataCol.Name) =Nothing
End If
If e.DataCol.Name="日期"
Dim SendTime As DateTime=e.DataRow("日期")
e.DataRow("发放日期")=DateAdd("m",1,SendTime)
End If
If e.DataRow("审核") = False And e.DataCol.Name = "编号" Then
If e.DataRow("编号")<>Nothing And e.DataRow("日期")<>Nothing
If e.DataCol.Name="日期" Or e.DataCol.Name="编号"
Dim ChangeTime(0 To 100) As DateTime
Dim a As Integer
Dim b As Integer
Dim c As DateTime
Dim n As Integer=0
Dim tag As Integer=0
Dim tempTime1 As DateTime
Dim tempTime2 As DateTime
For Each dr As DataRow In DataTables("合同记录").Select("编号 = '" & e.DataRow("编号") & "'" )
If dr.IsNull("辞退日期") Or dr("辞退日期")>e.DataRow("日期")
ChangeTime(n)=dr("登记月份")
n=n+1
Else If dr("辞退日期")<e.DataRow("日期")
tempTime1=CDate(dr("辞退日期"))
tempTime2=CDate(e.DataRow("日期"))
If(tempTime1.Year=tempTime2.Year And tempTime1.Month=tempTime2.Month)
ChangeTime(n)=dr("登记月份")
n=n+1
Else
tag=-1
End If
Exit For
End If
Next
If tag=-1 '如果有一条记录的辞退日期小于考勤日期,那么这条考勤记录为空
e.DataRow("姓名")=Nothing
e.DataRow("部门")=Nothing
e.DataRow("班组")=Nothing
e.DataRow("基本工资")=Nothing
e.DataRow("月度考核")=Nothing
e.DataRow("公积金")=Nothing
e.DataRow("社会保险")=Nothing
e.DataRow("加班是否")=Nothing
e.DataRow("银行卡号")=Nothing
e.DataRow("起征额")=Nothing
e.DataRow("所得税号")=Nothing
Else
Dim AttendanceTime As DateTime
AttendanceTime = e.DataRow("日期")
For a=0 To n-1
For b=a+1 To n-1
If ChangeTime(a) > ChangeTime(b) Then
c = ChangeTime(a)
ChangeTime(a) = ChangeTime(b)
ChangeTime(a) = c
End If
Next
Next
'For a=0 To n-1
'MessageBox.Show(ChangeTime(a))
'Next
Dim flag As Integer=0
For a=0 To n-1
If(e.DataRow("日期")>=ChangeTime(a))
flag=a
End If
Next
Dim MaxChangeTime As DateTime=ChangeTime(flag)
For Each dr As DataRow In DataTables("合同记录").Select("编号 = '" & e.DataRow("编号")& "' And 登记月份='" & MaxChangeTime & "'" )
e.DataRow("姓名")=dr("姓名")
e.DataRow("部门")=dr("部门")
e.DataRow("班组")=dr("班组")
e.DataRow("基本工资")=dr("基本工资")
e.DataRow("月度考核")=dr("月度考核")
e.DataRow("公积金")=dr("公积金")
e.DataRow("社会保险")=dr("社会保险")
e.DataRow("加班是否")=dr("加班是否")
e.DataRow("银行卡号")=dr("银行卡号")
e.DataRow("起征额")=dr("起征额")
e.DataRow("所得税号")=dr("所得税号")
Next
End If
End If
End If
Dim dr2 As DataRow =e.DataRow
Dim chuqin As Decimal
chuqin=DataTables("考勤表").Compute("Sum(出勤)", "考勤日期='" & dr2("日期") & "' And 编号=" & dr2("编号") )
Dim fadingchuqin As Decimal
fadingchuqin=DataTables("法定出勤").Compute("Sum(出勤天数)", "日期='" & dr2("日期") & "'")
'计算出勤
If not dr2.IsNull("姓名") Then
If fadingchuqin=chuqin Then
dr2("出勤")="全勤"
Else
dr2("出勤")=chuqin
End If
End If
End If