Foxtable(狐表)用户栏目专家坐堂 → 跨表更新重复行问题


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

主题:跨表更新重复行问题

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


加好友 发短信
等级:幼狐 帖子:69 积分:799 威望:0 精华:0 注册:2017/8/2 12:34:00
跨表更新重复行问题  发帖心情 Post By:2018/4/19 22:25:00 [只看该作者]

 请问下 ,我有个关联表,父表的datachanged里写入了跨表跟新的代码,子表未设定,父表是以为采购合同号和子表做了关联。采购合同可能有多个,但是子表的订单跟进只有一个。
现在每次新增父表,子表都会新增行。  我在子表的datachanged里写入以销售合同号为基础筛选,如果有重复的则取消录入。但是老出错。。。是不是这个思路有问题还是代码有问题?
是不是关联的时候用采购合同号为基础的缘故?
父表: 
Select Case e.DataCol.name
    Case "采购合同号"
        Dim dr As DataRow = DataTables("订单跟进").Find(" 采购合同号= '" & e.OldValue & "'")
        If dr Is Nothing Then
            dr = DataTables("订单跟进").AddNew()
            dr("销售合同号") = e.DataRow("销售合同号")
            dr("客户") = e.DataRow("客户")
        Else
            dr("采购合同号") = e.DataRow("采购合同号")
        End If
    Case "客户","销售合同号"
        Dim dr As DataRow = DataTables("订单跟进").Find("采购合同号 = '" & e.DataRow("采购合同号") & "'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

子表:
If e.DataCol.Name = "销售合同号" Then
    Dim dr As DataRow
    dr = e.DataTable.Find("销售合同号 = '" & e.NewValue & "'")
    If dr IsNot Nothing Then
    e.Cancel = True
    End If
End If

[此贴子已经被作者于2018/4/19 22:31:23编辑过]

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/19 22:53:00 [只看该作者]

改成以【销售合同号】作关联。订单跟进和采购合同这个两个表不需要做关联吧?如果订单跟进只有一行,那它应该作为父表。

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


加好友 发短信
等级:幼狐 帖子:69 积分:799 威望:0 精华:0 注册:2017/8/2 12:34:00
  发帖心情 Post By:2018/4/19 22:57:00 [只看该作者]

 甜老师,我是以销售生产采购,采购再生成跟进。。。改成跟进为父表,整体结构会出问题么?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/4/19 23:01:00 [只看该作者]

跟进表是跟进销售单,还是跟进采购单。

 

如果是跟进销售单,采购单和跟进表没有任何联系。

 

如果是跟进采购单,那跟进表不可能只有一行数据。


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


加好友 发短信
等级:幼狐 帖子:69 积分:799 威望:0 精华:0 注册:2017/8/2 12:34:00
  发帖心情 Post By:2018/4/19 23:10:00 [只看该作者]

 跟进表是采集跟进销售,但是部分数据是来自于采购的。

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


加好友 发短信
等级:幼狐 帖子:69 积分:799 威望:0 精华:0 注册:2017/8/2 12:34:00
  发帖心情 Post By:2018/4/19 23:18:00 [只看该作者]

 我明白了。。思路想岔了之前。。谢谢!

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


加好友 发短信
等级:幼狐 帖子:69 积分:799 威望:0 精华:0 注册:2017/8/2 12:34:00
  发帖心情 Post By:2018/4/23 22:48:00 [只看该作者]

 甜老师,再请问下,我在表A新增行后,在表B也新增行,表C也新增行。。表B获取表A的   A,B,C   表C 或者表A的A,B,C,D。。并且在表A修改信息后自动更新。。
我在表A的datacolchanged中把跨表更新写了两次。。是不是有什么简单的方法。
以下是我写的代码,麻烦看下。。谢谢!
Select Case e.DataCol.name  
    Case "A"
        Dim dr As DataRow = DataTables("表B").Find(" A= '" & e.OldValue & "'")
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew()
            dr("B") = e.DataRow("B")
            dr("C") = e.DataRow("C")
 Else
            dr("A") = e.DataRow("A")         
       End If
       
    Case "B","C"
        Dim dr As DataRow = DataTables("表B").Find(" A= '" & e.OldValue & "'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If      
End Select

Select Case e.DataCol.name  
    Case "A"
        Dim dr As DataRow = DataTables("表C").Find(" A= '" & e.OldValue & "'")
        If dr Is Nothing Then
            dr = DataTables("表C").AddNew()
            dr("B") = e.DataRow("B")
            dr("C") = e.DataRow("C")
            dr("D") = e.DataRow("D")
      
 Else
            dr("A") = e.DataRow("A")         
       End If
       
    Case "B","C","D"
        Dim dr As DataRow = DataTables("表C").Find(" A= '" & e.OldValue & "'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If      
End Select


 回到顶部
帅哥,在线噢!
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110587 积分:562831 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2018/4/23 22:53:00 [只看该作者]

就这样好了,可以改改,也差不了多少

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


加好友 发短信
等级:幼狐 帖子:69 积分:799 威望:0 精华:0 注册:2017/8/2 12:34:00
  发帖心情 Post By:2018/4/23 22:59:00 [只看该作者]

 OK。。谢谢老师!

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


加好友 发短信
等级:幼狐 帖子:69 积分:799 威望:0 精华:0 注册:2017/8/2 12:34:00
  发帖心情 Post By:2018/4/23 23:23:00 [只看该作者]

 蓝老师,再咨询下。。。我用刚才的代码,通过窗口输入的信息,表A信息全,可是表B和C就只有B能显示数据。C,D都不行。。但是直接在A表里直接修改数据,表B和表C又都能继承。

 回到顶部
总数 11 1 2 下一页