以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  跨表取值  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=90674)

--  作者:zhuxin
--  发布时间:2016/9/19 16:39:00
--  跨表取值
现在有三个表:货物工序单价、压铸计件、数控计件。现在想分工序录入计算工资,在压铸计件表录入单号及产品名称,压铸计件根据录入的产品名称跨表引用货物工序单价相关项目,这部份可以引用得了。但是数控计件根据单号跨表引用压铸计件的产品名称后,怎样再根据引用的产品名称再跨表引用货物工序单价的相关项目呢?If e.DataCol.Name = "产品名称" Then
    If e.NewValue Is Nothing Then
        e.DataRow("压铸工序") = Nothing
        e.DataRow("单价") = Nothing
         Else
        Dim dr As DataRow
        dr = DataTables("货物工序单价").Find("[产品名称] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing 
            e.DataRow("压铸工序") = dr("压铸工序")
            e.DataRow("单价") = dr("压铸单价") 
        End If
    End If

图片点击可在新窗口打开查看此主题相关图片如下:压铸计件.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:货物工序单价.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:数控.png
图片点击可在新窗口打开查看


--  作者:有点蓝
--  发布时间:2016/9/19 17:01:00
--  
一样的,想要哪个表的数据就到哪个表查询

Dim dr As DataRow
        dr = DataTables("压铸计件").Find("[产品名称] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing 
            ......
        End If

        dr = DataTables("货物工序单价").Find("[产品名称] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing 
            ......
        End If

--  作者:zhuxin
--  发布时间:2016/9/20 16:58:00
--  
我的意思是:第一次是根据数控计件的正单号引用压铸车间的产品名称,数控计件再根据引用得来的产品名称来引用货物工序单价的数控计件工序,并不是以一个产品名称用引二个表的数据
If e.DataCol.Name = "正单号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("产品名称") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("压铸计件").Find("[正单号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            e.DataRow("产品名称") = dr("产品名称")
        End If
    End If
End If
If e.DataCol.Name = "产品名称" Then
    If e.NewValue Is Nothing Then
        e.DataRow("数控工序1") = Nothing
    Else
        Dim dt As DataRow
        dt = DataTables("货物工序单价").Find("[产品名称] = " & e.DataRow("产品名称") & "\'")
        If dT IsNot Nothing
            e.DataRow("数控工序1") = dt("数控1工序")
        End If
    End If
End If

--  作者:有点蓝
--  发布时间:2016/9/20 17:08:00
--  
If e.DataCol.Name = "正单号" Then
    If e.NewValue Is Nothing Then
        e.DataRow("产品名称") = Nothing
        e.DataRow("数控工序1") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("压铸计件").Find("[正单号] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            e.DataRow("产品名称") = dr("产品名称")
            
            Dim dr1 As DataRow = DataTables("货物工序单价").Find("[产品名称] = " & dr("产品名称") & "\'")
            If dr1 IsNot Nothing
                e.DataRow("数控工序1") = dr1("数控1工序")
            End If
            
        End If
    End If
End If


--  作者:zhuxin
--  发布时间:2016/9/20 17:34:00
--  
测试过可以通过了
不知这样行不行Select Case e.DataCol.Name
    Case "正单号"
                    If e.NewValue Is Nothing Then
                e.DataRow("产品名称") = Nothing
            Else
                Dim dr As DataRow
                dr = DataTables("压铸计件").Find("[正单号] = \'" & e.NewValue & "\'")
                If dr IsNot Nothing
                    e.DataRow("产品名称") = dr("产品名称")
                End If
            End If
   Case "产品名称"
       If e.NewValue Is Nothing Then
        e.DataRow("数控工序1") = Nothing
        e.DataRow("数控工序2") = Nothing
        e.DataRow("数控工序3") = Nothing
        e.DataRow("数控工序4") = Nothing
    Else
        Dim dr As DataRow
        dr = DataTables("货物工序单价").Find("[产品名称] = \'" & e.NewValue & "\'")
        If dr IsNot Nothing
            e.DataRow("数控工序1") = dr("数控1工序")
            e.DataRow("数控工序2") = dr("数控2工序")
            e.DataRow("数控工序3") = dr("数控3工序")
            e.DataRow("数控工序4") = dr("数控4工序")
        End If
    End If
End Select

--  作者:有点蓝
--  发布时间:2016/9/20 17:38:00
--  
测试一下就知道了