以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  从子表按条件取值赋给父表  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=98892)

--  作者:蓝蚂蚁
--  发布时间:2017/4/8 20:40:00
--  从子表按条件取值赋给父表
直接来问题吧:

图片点击可在新窗口打开查看此主题相关图片如下:地点.jpg
图片点击可在新窗口打开查看
请问老师们,这个代码如何编写?

--  作者:有点色
--  发布时间:2017/4/9 11:02:00
--  

子表DataColChanged事件

 

If e.DataCol.Name = "地点" Then
    Dim pdr As DataRow = e.DataRow.GetParentRow("订单表")
    Dim fdr As DataRow = e.DataTable.Find("产品编号 = \'" & e.DataRow("产品编号") & "\'", "_Sortkey")
    If pdr IsNot Nothing Then
        If fdr IsNot Nothing Then
            pdr("地点") = fdr("地点")
        Else
            pdr("地点") = Nothing
        End If
    End If
End If


--  作者:蓝蚂蚁
--  发布时间:2017/4/9 11:06:00
--  
高手,谢谢老师,万分感谢!
--  作者:蓝蚂蚁
--  发布时间:2017/6/29 8:29:00
--  
呼叫有点色老师,问题补充:
实现上面的要求,能否又实现这样的功能:在子表中数据中搜索地点,如果有北京的就在父表的地点上自动填上北京(通过产品编码关联),把同产品编码的子表都搜索一遍,如果没有就把第一条记录的地点自动填充到父表的地点栏。
大概意思是:
for ****
   if 子表地点=北京 then
      父表地点=北京
   else
      父表地点=子表第一条记录的地点
   end
next
请问具体代码如何编写



--  作者:有点色
--  发布时间:2017/6/29 8:46:00
--  
If e.DataCol.Name = "地点" Then
    Dim pdr As DataRow = e.DataRow.GetParentRow("订单表")
    If pdr IsNot Nothing Then
        Dim fdr As DataRow = e.DataTable.Find("产品编号 = \'北京\'", "_Sortkey")
        If fdr IsNot Nothing Then
            pdr("地点") = "北京"
        Else
            fdr = e.DataTable.Find("产品编号 = \'" & e.DataRow("产品编号") & "\'", "_Sortkey")
            If fdr IsNot Nothing Then
                pdr("地点") = fdr("地点")
            Else
                pdr("地点") = Nothing
            End If
        End If
    End if
End If