以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]主从表关联查询问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=44432)

--  作者:wangnovel
--  发布时间:2013/12/30 22:59:00
--  [求助]主从表关联查询问题
说明:1、有两对表,都是主从关系,主表1和从表1根据ID1关联;主表2和从表2根据ID2关联
         2、部门、姓名、ID1和ID2都是字符型;年份和月份都是整型;出勤数为浮点型
求助:我希望在主表1中输入所有信息后,当在从表1中输入姓名后,触发DataColChanged事件,能够在主表2和从表2中找到对应的上个月的出勤数。如,当我在从表1中输入“张三”后,上月出勤数自动填充为“20”,敬请狐爸或大师指教!
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20131230224717.png
图片点击可在新窗口打开查看
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20131230224730.png
图片点击可在新窗口打开查看

[此贴子已经被作者于2013-12-30 22:59:25编辑过]

--  作者:有点甜
--  发布时间:2013/12/30 23:04:00
--  
 呃,直接查找不就行了?各个表之间不是可以灵活查找的么?


--  作者:wangnovel
--  发布时间:2013/12/30 23:16:00
--  
一开始也认为是容易的,但试着写了一下,不成功,请指教,最好给个具体的代码,先谢了
--  作者:狐狸爸爸
--  发布时间:2013/12/31 8:06:00
--  

这个没有理由不可以的哦,从表1的DatacolChanged事件:

 

If e.DataCol.name = "姓名" Then
    Dim dr1 As DataRow
    Dim dr2 As DataRow
    Dim dr3 As DataRow
    dr1 = DataTables("主表1").Find("id1 = \'" & e.DataRow("id1") & "\'")
    If dr1 IsNot Nothing Then
        Dim y As Integer = e.DataRow("年份")
        Dim m As Integer = e.DataRow("月份")
        If m =1 Then
            y = y -1
            m = 12
        Else
            m = m -1
        End If
        dr2 = DataTables("主表2").Find("姓名 = \'" & e.DataRow("姓名") & "\' And 年份 = " & y & " and 月份 = " & m)
        If dr2 IsNot Nothing Then
            dr3 = DataTables("从表2").Find("id2 = \'" & dr2("id2") & "\'")
            If dr3 IsNot Nothing Then
                e.DataRow("上月出勤天数") = dr3("出勤数")
            End If
        End If
    End If
End If

 

 


--  作者:wangnovel
--  发布时间:2013/12/31 9:58:00
--  
ok,问题解决了,谢谢狐爸和有点甜!