Foxtable(狐表)用户栏目专家坐堂 → 数据引用


  共有9280人关注过本帖树形打印复制链接

主题:数据引用

帅哥哟,离线,有人找我吗?
zhangxl1964
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:553 积分:5327 威望:0 精华:0 注册:2011/6/7 13:33:00
数据引用  发帖心情 Post By:2011/10/29 7:35:00 [只看该作者]

请问:如何实现从后台直接跨表引用数据,或是说从数据库直接引用数据?如有考勤表和工资表,打开项目时都没有加载数据,打开工资表时没能取到考勤表的出勤数据,等打开考勤表相对应的月份数据后才引用到,这是那里出错了?

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


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47448 积分:251048 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/10/29 8:26:00 [只看该作者]

都没有看到加载数据的代码啊。

用个简单的例子说话吧。


 回到顶部