Foxtable(狐表)用户栏目专家坐堂 → 关于窗口中的表用数据填充器时过滤条件设定问题。


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

主题:关于窗口中的表用数据填充器时过滤条件设定问题。

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
关于窗口中的表用数据填充器时过滤条件设定问题。  发帖心情 Post By:2011/1/22 16:04:00 [只看该作者]

我设计了一个窗口,打开窗中有个表,且这个表有复选显示的,我想将这个表中已经复选了的数据填充到另一个表中,请问其Filler
的过滤条件如何设定呢?

我现在用下面的代码不行的

 

 For Each r1 As Row In Tables("ERP订单查询_Table1").GetCheckedRows
            Dim f As New Filler
            f.SourceTable = DataTables("ERP订单查询_Table1") '指定数据来源
            f.SourceCols = "料品名称" '指定数据来源列
            f.DataTable = DataTables("订单需求情况录入表") '指定数据接收表
            f.DataCols = "成品名称" '指定数据接收列
            f.Distinct =True
            f.Append=False
           
            f.Fill() '填充
        Next


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/1/22 16:11:00 [只看该作者]

呵呵, 这个代码你写得有点离谱,Fill是批量填充数据的,不适合这种情况使用。

应该:

For Each r1 As Row In Tables("ERP订单查询_Table1").GetCheckedRows
      Dim r2 As Row  = Tables("订单需求情况录入表").AddNew()
      r2(“成品名称”) = r1("材料名称")
Next

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2011/1/22 16:35:00 [只看该作者]

以下是引用狐狸爸爸在2011-1-22 16:11:00的发言:
呵呵, 这个代码你写得有点离谱,Fill是批量填充数据的,不适合这种情况使用。

应该:

For Each r1 As Row In Tables("ERP订单查询_Table1").GetCheckedRows
      Dim r2 As Row  = Tables("订单需求情况录入表").AddNew()
      r2(“成品名称”) = r1("材料名称")
Next

我个这明白,但想用FILL的方法加上过滤条件,Fill不是有过滤的吗?因为Filler有这个Distinct

逻辑型,是否排除重复内容,默认为True;如果设为False,将不会排除重复内容,也不会排除已有内容和空白值。而我是想实现当用户选择了相关数据填充时将不重复的成品名称填充到目的表中,你上面的代码是所有选择的数都填充了。所以我想用FILL的方法否则只能用Addnew()的方法了。

[此贴子已经被作者于2011-1-22 16:36:36编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/1/22 16:45:00 [只看该作者]

你可以自己写代码判断要添加的值是否已经存在的啊:  

 

For Each r1 As Row In Tables("ERP订单查询_Table1").GetCheckedRows

      If  DataTables("订单需求情况录入表").Find("成品名称 = '" & r1("材料名称") = & "'") Is Nothing Then
           Dim r2 As Row  = Tables("订单需求情况录入表").AddNew()
           r2(“成品名称”) = r1("材料名称")
      End If
Next

 


 


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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2011/1/22 16:51:00 [只看该作者]

以下是引用狐狸爸爸在2011-1-22 16:45:00的发言:

你可以自己写代码判断要添加的值是否已经存在的啊:  

 

For Each r1 As Row In Tables("ERP订单查询_Table1").GetCheckedRows

      If  DataTables("订单需求情况录入表").Find("成品名称 = '" & r1("材料名称") = & "'") Is Nothing Then
           Dim r2 As Row  = Tables("订单需求情况录入表").AddNew()
           r2(“成品名称”) = r1("材料名称")
      End If
Next

 


 

这个代码是不增加订单需求情况录入表中已有的成品名称吧,但我只是想控制每次增加数据时不重复增加成品名称的。

[此贴子已经被作者于2011-1-22 16:51:41编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/1/22 17:24:00 [只看该作者]

Dim lst As  New List(of String)
For Each r1 As Row In Tables("ERP订单查询_Table1").GetCheckedRows
          dim v as String = r1("材料名称")
          if lst.Contains(v) = False Then
                Dim r2 As Row  = Tables("订单需求情况录入表").AddNew()
                r2(“成品名称”) = v
                lst.Add(v)
         End If
Next

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


加好友 发短信
等级:五尾狐 帖子:1016 积分:7135 威望:0 精华:0 注册:2008/9/1 22:34:00
  发帖心情 Post By:2011/1/22 17:28:00 [只看该作者]

谢谢这个要学习下!

 回到顶部