以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  关于窗口中的表用数据填充器时过滤条件设定问题。  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=9047)

--  作者:yankunhao
--  发布时间: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


--  作者:狐狸爸爸
--  发布时间: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
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间: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
--  发布时间: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编辑过]

--  作者:狐狸爸爸
--  发布时间: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
--  发布时间:2011/1/22 17:28:00
--  
谢谢这个要学习下!