以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  主教:获取子表的"配料"列的所有不重复的数据  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=30513)

--  作者:kevin
--  发布时间:2013/3/29 13:06:00
--  主教:获取子表的"配料"列的所有不重复的数据
表A是主表.表B是子表,通过"单号"关联起来.
想通过代码,在"所有配料"列获取子表的"配料"列的所有不重复的数据,我使用以下代码,无法踢除重复的数据.请老师帮忙 !

Select Case e.DataCol.Name
    Case "单号"
        Dim drs As List(Of DataRow) = e.DataRow.GetChildRows("表B")
        Dim temp As String
        For Each dr As DataRow In drs
            temp = temp & dr("配料") & ","
        Next
        e.DataRow("所有配料") = temp
End Select

--  作者:ybil
--  发布时间:2013/3/29 13:52:00
--  

GetComboListString

从指定的列中提取不重复的值,用符号"|"将这些值连接成一个字符串,并返回这个字符串。
此方法通常用于动态设置列表项目。

语法:

GetComboListString(ColumnName,Filter, Sort)

ColumnName:列名称,从此列中提取不重复的值。
Filter: 可选参数,指定一个条件表达式,只返回符合此条件的值。
Sort: 可选参数,指定排序列,如果省略,则根据取值列排序,通常无需设置。

请参考表达式的运算符和函数条件表达式

示例

Output.Show(DataTables("订单").GetComboListString("产品"))

也可以设置条件,例如从客户表中提取华北地区的客户名单:

Dim s As String
s =
DataTables("客户").GetComboListString("客户名称","[地区] = \'华北\'"
)
Output.Show(s)


--  作者:狐狸爸爸
--  发布时间:2013/3/29 14:39:00
--  

如果关联列是字符型:

 

Select Case e.DataCol.Name
    Case "单号"
        e.DataRow("所有配料") = DataTables("子表").GetComboListString("取值列","子表关联列 = \'" & e.DataRow("父表关联列") & "\'")
End Select

 

如果关联列是数值型:

 

Select Case e.DataCol.Name
    Case "单号"
        e.DataRow("所有配料") = DataTables("子表").GetComboListString("取值列","子表关联列 = " & e.DataRow("父表关联列") )
End Select