以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  能否给GetComboListString 增加一个排序参数?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=4992)

--  作者:yangming
--  发布时间:2009/11/15 17:05:00
--  能否给GetComboListString 增加一个排序参数?

GetComboListString(ColumnName,Filter)

ColumnName:列名称,从此列中提取不重复的值。
Filter:     可选参数,指定一个条件表达式,只返回符合此条件的值。

能否给GetComboListString 增加一个排序参数?
就如同:GetComboListString(ColumnName,Filter,Sort)

Tables("订单").Cols("客户").ComboList = DataTables("客户").GetComboListString("客户名称","",id)


[此贴子已经被狐狸爸爸于2009-11-16 16:50:01编辑过]

--  作者:czy
--  发布时间:2009/11/15 17:13:00
--  
记得老六说不行的。
--  作者:yangming
--  发布时间:2009/11/15 17:46:00
--  
以下是引用hnaysx在2009-11-15 17:34:00的发言:

请问 客户名称相同的 ID 是否相同?

如果是一一对应应该可以,如果不是一一对应,得到的不重复的客户名称 使用那一条记录的ID?

[此贴子已经被作者于2009-11-15 17:35:22编辑过]

ID不同,我这儿的ID就是排序列


--  作者:yangming
--  发布时间:2009/11/15 17:46:00
--  
以下是引用czy在2009-11-15 17:13:00的发言:
记得老六说不行的。

目录树的排序解决了,但是列表项的排序并没有解决


--  作者:狐狸爸爸
--  发布时间:2009/11/16 8:31:00
--  
呵呵,这个加不了的
--  作者:mr725
--  发布时间:2009/11/16 10:34:00
--  
这个狐爸总是这么小气,那咱们就自己做一个排序,仅供参考:

Dim g As New GroupTableBuilder("lb", DataTables("客户"))
g.Groups.AddDef("客户名称")
g.Build()

dim p0 as String
dim p as String = DataTables("客户").GetComboListString("客户名称")
For n As integer = p.split("|").length- 1 to 0 step -1   \' \'这是降序! 升序这样 0 to p.split("|").length- 1
    p0 = p0  & "|" & p.split("|")(n)
Next
Tables("订单").Cols("客户").ComboList  = p0    \'或: p0.substring(1) 》删除第一个 "|"  符号
MainTable = Tables("订单")

只是汉字的排序,有个多音字的现象,如:重 是无法排到拼音 c 开头的里面,而是排到 z 开头的拼音里面。
[此贴子已经被作者于2009-11-16 10:48:32编辑过]

--  作者:mr725
--  发布时间:2009/11/16 11:14:00
--  
以下是引用mr725在2009-11-16 10:34:00的发言:
这个狐爸总是这么小气,那咱们就自己做一个排序,仅供参考:

Dim g As New GroupTableBuilder("lb", DataTables("客户"))
g.Groups.AddDef("客户名称")
g.Build()

dim p0 as String
dim p as String = DataTables("lb").GetComboListString("客户名称")
For n As integer = p.split("|").length- 1 to 0 step -1   \' \'这是降序! 升序这样 0 to p.split("|").length- 1
    p0 = p0  & "|" & p.split("|")(n)
Next
Tables("订单").Cols("客户").ComboList  = p0    \'或: p0.substring(1) 》删除第一个 "|"  符号
MainTable = Tables("订单")

只是汉字的排序,有个多音字的现象,如:重 是无法排到拼音 c 开头的里面,而是排到 z 开头的拼音里面。
[此贴子已经被作者于2009-11-16 10:48:32编辑过]

[此贴子已经被作者于2009-11-16 11:23:20编辑过]

--  作者:yangming
--  发布时间:2009/11/16 11:19:00
--  
谢谢 mr725老师,目前就是按拼音排序的,我是想按我输入的顺序排序,
--  作者:mr725
--  发布时间:2009/11/16 12:24:00
--  
以下是引用yangming在2009-11-16 11:19:00的发言:
谢谢 mr725老师,目前就是按拼音排序的,我是想按我输入的顺序排序,

这个也可以用代码搞定:


Dim g As New GroupTableBuilder("临时表", DataTables("客户"))
g.Groups.AddDef("客户名称")
g.Build()

With DataTables("临时表")
    .DataCols.Add("输入顺序", GetType(integer))
End With

for n as integer = 0 to tables("临时表").count-1
    Dim dr As integer
    dr = DataTables("客户").Compute("min(输入的序号)", "[客户名称] = \'" & tables("临时表").rows(n)("客户
名称") & "\'")
    tables("临时表").rows(n)("输入顺序") = dr
next

tables("临时表").sort = "输入顺序"
dim p0 as String
For n As integer = 0 to tables("临时表").count-1
    p0 = p0  & "|" & tables("临时表").rows(n)("客户名称")
Next
\'生产列表项目::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Tables("订单").Cols("客户").ComboList  =  p0    \'或:p0.substring(1)  \' 

[此贴子已经被作者于2009-11-16 12:40:54编辑过]