Foxtable(狐表)用户栏目专家坐堂 → 跨表复制不重复的行内容


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

主题:跨表复制不重复的行内容

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


加好友 发短信
等级:一尾狐 帖子:485 积分:4081 威望:0 精华:0 注册:2015/12/16 8:22:00
跨表复制不重复的行内容  发帖心情 Post By:2016/5/12 16:04:00 [只看该作者]

If e.DataCol.Name = "仓库物料编号" Then

    Dim dr As DataRow = DataTables("A").Find("仓库物料编号 = '" & e.NewValue & "'")

    If dr Is Nothing Then

        dr = DataTables("B").AddNew()

        dr("物料名称") = e.DataRow("物料名称")

        dr("规格") = e.DataRow("规格")

        dr("等级") = e.DataRow("等级")

        dr("单位") = e.DataRow("单位")

        dr("仓库物料编号") = e.DataRow("仓库物料编号")

    End If

End If


在表A和表B有部分列的内容一样,若表A新增一个仓库物料编号,若表B中没有找到的话,则表B新增一行,并将仓库物料编号、物料名称、规格、等级、单位填入新增的行中,但这个单位只能填入仓库物料编号,其它的不能自动填入;


表A中可能会存在多行一样编号的仓库物料编号,表B只有一个仓库物料编号与其对应,若表A的编号不变的情况下,其它列变化,系统不做处理,请问应该如何处理?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 16:13:00 [只看该作者]

 看看这个例子吧

 

http://www.foxtable.com/help/topics/2490.htm

 


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


加好友 发短信
等级:一尾狐 帖子:485 积分:4081 威望:0 精华:0 注册:2015/12/16 8:22:00
  发帖心情 Post By:2016/5/12 16:37:00 [只看该作者]

Select Case e.DataCol.name
    Case "仓库物料编号"
        Dim dr As DataRow = DataTables("表B").Find("仓库物料编号 = '" & e.OldValue & "'")
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew()
            dr("仓库物料编号") = e.DataRow("仓库物料编号")
            dr("物料名称") = e.DataRow("物料名称")
            dr("规格") = e.DataRow("规格")
            dr("等级") = e.DataRow("等级")
            dr("单位") = e.DataRow("单位")
        Else
            dr("仓库物料编号") = e.DataRow("仓库物料编号")
        End If
    Case "物料名称","规格","等级","单位"
        Dim dr As DataRow = DataTables("表B").Find("仓库物料编号 = '" & e.DataRow("仓库物料编号") & "'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select

发现在表A增加一个行,仓库物料编号一样,若其它列信息有修改的时候,表B中会出现一行空的,请问如何处理?

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

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

[此贴子已经被作者于2016/5/12 16:40:31编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 16:54:00 [只看该作者]

Select Case e.DataCol.name
    Case "仓库物料编号"
   Dim dr As DataRow
        If e.oldvalue = Nothing Then
            dr = DataTables("表B").Find("仓库物料编号 = '" & e.newvalue & "'")
        Else
            dr = DataTables("表B").Find("仓库物料编号 = '" & e.oldvalue & "'")
        End If
        If dr Is Nothing Then
            dr = DataTables("表B").AddNew()
            dr("仓库物料编号") = e.DataRow("仓库物料编号")
            dr("物料名称") = e.DataRow("物料名称")
            dr("规格") = e.DataRow("规格")
            dr("等级") = e.DataRow("等级")
            dr("单位") = e.DataRow("单位")
        Else
            dr("仓库物料编号") = e.DataRow("仓库物料编号")
        End If
    Case "物料名称","规格","等级","单位"
        Dim dr As DataRow = DataTables("表B").Find("仓库物料编号 = '" & e.DataRow("仓库物料编号") & "'")
        If dr IsNot Nothing Then
            dr(e.DataCol.Name) = e.DataRow(e.DataCol.Name)
        End If
End Select


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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/12 18:50:00 [只看该作者]

编码编码编码

如果数据量大了,就等死你

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/12 20:10:00 [只看该作者]

以下是引用凡夫俗子在2016/5/12 18:50:00的发言:
编码编码编码

如果数据量大了,就等死你

 

为什么?具体实例。


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


加好友 发短信
等级:一尾狐 帖子:457 积分:3523 威望:0 精华:0 注册:2016/1/22 18:17:00
  发帖心情 Post By:2016/5/13 9:46:00 [只看该作者]

很简单,你不要总是拿几条数据的增删修改来测试。随便一个表随机生成两万条数据,再进行全部的增删修改,再保存。是不是等死,要老半天才好,任务管理器显示程序失去反应。而这些我都改写了方法,均实现秒级完成。相信狐爸在内核级肯定也能完成,效果更好。

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


加好友 发短信
等级:一尾狐 帖子:485 积分:4081 威望:0 精华:0 注册:2015/12/16 8:22:00
  发帖心情 Post By:2016/5/13 14:51:00 [只看该作者]

请问用什么办法?
[此贴子已经被作者于2016/5/13 14:51:38编辑过]

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/5/13 14:53:00 [只看该作者]

以下是引用benwong2013在2016/5/13 14:51:00的发言:
请问用什么办法?
[此贴子已经被作者于2016/5/13 14:51:38编辑过]

 

人家说的东西和你做的东西没有任何关联。


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


加好友 发短信
等级:一尾狐 帖子:485 积分:4081 威望:0 精华:0 注册:2015/12/16 8:22:00
  发帖心情 Post By:2016/5/13 15:00:00 [只看该作者]

上面的代码是进行一列重复性的判定,若要进行两列的重复性判定,但两列判定满足的时候才进行,请问应如何处理?

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