Foxtable(狐表)用户栏目专家坐堂 → 请教 根据条件在另一表中查找符合条件的行,自动复制到需求表中


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

主题:请教 根据条件在另一表中查找符合条件的行,自动复制到需求表中

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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2011/5/11 16:12:00 [只看该作者]

????

不懂,求文件发来看看。


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/5/11 16:55:00 [只看该作者]

你要怎样,我将要的勾选,就会加入,我在总表加入新的数据,只要清单表里有,我勾选也没有问题.我不理解了,你还要做到什么样子?

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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2011/5/11 18:01:00 [只看该作者]

现在只有第一次钩选才会填充数据,而第二次、第三次钩选没有进行填充数据

我希望  只要有打钩的动作,就自动在明细表中填充数据。

 

全新的数据,之前填充的依然保留。。

 

这样行不行呢?

[此贴子已经被作者于2011-5-11 18:02:03编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2011/5/11 18:30:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:qq截图未命名.jpg
图片点击可在新窗口打开查看

 


          If e.NewValue = True Then
            Dim dr5 As DataRow
            For i As Long = 0 To Tables("物料编码").count -1
                dr5 = DataTables("物料编码").Find("物料型号='" & Tables("物料编码").rows(i)("物料型号") & "'")
                If dr5("物料型号")= Tables("生产任务单总表").Current("物料型号") Then
                    Dim r As Row=Tables("生产任务单总表.车间绩效记录").AddNew()
                    Tables("车间绩效记录").rows(i)("级别") =Tables("物料编码").rows(i)("级别")
                    Tables("车间绩效记录").rows(i)("物料编码") =Tables("物料编码").rows(i)("物料编码")
                    Tables("车间绩效记录").rows(i)("物料型号") =Tables("物料编码").rows(i)("物料型号")
                    Tables("车间绩效记录").rows(i)("物料名称") =Tables("物料编码").rows(i)("物料名称")
                    Tables("车间绩效记录").rows(i)("加工工艺") =Tables("物料编码").rows(i)("加工工艺")
                    Tables("车间绩效记录").rows(i)("工艺内容") =Tables("物料编码").rows(i)("工艺内容")
                    Tables("车间绩效记录").rows(i)("物料类别") =Tables("物料编码").rows(i)("类别")
                    Tables("车间绩效记录").rows(i)("品质标准") =Tables("物料编码").rows(i)("品质标准")
                    Tables("车间绩效记录").rows(i)("产能") =Tables("物料编码").rows(i)("产能")
                    Tables("车间绩效记录").rows(i)("周期") =Tables("物料编码").rows(i)("生产周期")
                    Tables("车间绩效记录").rows(i)("单价") =Tables("物料编码").rows(i)("价格")
                    Tables("车间绩效记录").rows(i)("计量单位") =Tables("物料编码").rows(i)("计量单位")
                End If
            Next
        End If
      

我的 物料编码表有2W多行。。。是不是行太多了?


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/5/11 20:18:00 [只看该作者]

要填充新数据,把原来的数据删掉.重新来.为什么要这么做?不合理呀

 


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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2011/5/13 10:33:00 [只看该作者]

因为有的时候,根据一行任务单,需要安排多次的生产,所以就会有第二次、三次、四次填充。。

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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/13 10:42:00 [只看该作者]

1、你用的是事件,结果代码中用的不是e.DataRow,而是Tables("生产任务单总表").Current,Current是选定行,不是触发事件的行,如果表中有10行,你这么处理,重置列就会针对选定行执行10次,而不是每行执行1次。

2、代码中,增加了一行,并保存在变量r中:

Dim r As Row=Tables("生产任务单总表.车间绩效记录").AddNew()

可是你后面的扶植用的不是r,是:

 Tables("车间绩效记录").rows(i)("级别") =Tables("物料编码").rows(i)("级别")

新增的行是r,不是 Tables("车间绩效记录").rows(i),除非巧合和,否则不会出现正确的结果。

3、你明明用for each语句遍历物料编码的行,还用find找什么?
4、综上所述,代码为:

 

If e.DataCol.Name = "XXX" AndAlso e.NewValue = True Then
    Dim dr5 As DataRow
    For i As Long = 0 To Tables("物料编码").count -1
        dr5 = Tables("物料编码").rows(i)
        If dr5("物料型号")=e.DataRow("物料型号") Then
            Dim r As Row=Tables("生产任务单总表.车间绩效记录").AddNew()
            r("级别") =dr5("级别")
            r("物料编码") =dr5("物料编码")
            r("物料型号") =dr5("物料型号")
            r("物料名称") =dr5("物料名称")
            r("加工工艺") =dr5("加工工艺")
            r("工艺内容") =dr5("工艺内容")
            r("物料类别") =dr5("类别")
            r("品质标准") =dr5("品质标准")
            r("产能") =dr5("产能")
            r("周期") =dr5("生产周期")
            r("单价") =dr5("价格")
            r("计量单位") =dr5("计量单位")
        End If
    Next
End If

[此贴子已经被作者于2011-5-13 10:46:18编辑过]

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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/13 10:47:00 [只看该作者]

更规范的代码是:

 

 

If e.DataCol.Name = "XXX" AndAlso e.NewValue = True Then
    For Each r1  As Row In Tables("物料编码").Rows
        If r1("物料型号") = e.DataRow("物料型号") Then
            Dim r2 As Row = Tables("生产任务单总表.车间绩效记录").AddNew()
            r2("级别") = r1("级别")
            r2("物料编码") = r1("物料编码")
            r2("物料型号") = r1("物料型号")
            r2("物料名称") = r1("物料名称")
            r2("加工工艺") = r1("加工工艺")
            r2("工艺内容") = r1("工艺内容")
            r2("物料类别") = r1("类别")
            r2("品质标准") = r1("品质标准")
            r2("产能") = r1("产能")
            r2("周期") = r1("生产周期")
            r2("单价") = r1("价格")
            r2("计量单位") = r1("计量单位")
        End If
    Next
End If

[此贴子已经被作者于2011-5-13 10:47:42编辑过]

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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2011/5/13 14:39:00 [只看该作者]

谢谢狐爸指点迷津。。。


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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57596 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/5/13 15:09:00 [只看该作者]

老大,这个就是我我问你的那个.

 回到顶部
总数 21 上一页 1 2 3 下一页