以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  想在Cols("车牌号").Combolist 里显示车牌号和客户  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=10316)

--  作者:dd-zdh
--  发布时间:2011/5/30 15:39:00
--  想在Cols("车牌号").Combolist 里显示车牌号和客户
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT 车牌号,客户 From {客户表} "
dt = cmd.ExecuteReader
Tables("销售清单").Cols("车牌号").Combolist = dt.GetComboListString("车牌号")

--  作者:狐狸爸爸
--  发布时间:2011/5/30 15:47:00
--  
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "数据源名称"
cmd.CommandText = "SELECT Distinct 车牌号 From {客户表} "
dt = cmd.ExecuteReader
Tables("销售清单").Cols("车牌号").Combolist = dt.GetComboListString("车牌号")

--  作者:dd-zdh
--  发布时间:2011/5/30 16:02:00
--  

想把车牌号和客户同时都显示出来


--  作者:狐狸爸爸
--  发布时间:2011/5/30 16:22:00
--  

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "数据源名称"
cmd.CommandText = "SELECT distinct 车牌号,客户 From {客户表} "
dt = cmd.ExecuteReader
Dim v as string

For Each dr As DataRow in dt.DataRows

     v = v & dr("车牌号") & " " & dr("客户") & “|”

Next

Tables("销售清单").Cols("车牌号").Combolist = v


--  作者:dd-zdh
--  发布时间:2011/5/30 20:53:00
--  
为什么用这种方法,加载3000条的数据,在列表里显示的时间最少有5秒才能把这3000条显示出来
--  作者:狐狸爸爸
--  发布时间:2011/5/31 8:23:00
--  

用5秒是肯定的,从后台取3000行数据,还好组合成列表框。
 
用下面的代码可能会快一点:
 
Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "数据源名称"
cmd.CommandText = "SELECT distinct 车牌号,客户 From {客户表} "
dt = cmd.ExecuteReader
Dim v As New StringBuilder
For Each dr As DataRow in dt.DataRows
    v.Append(dr("车牌号"))
    v.Append(" ")
    v.Append(dr("客户"))
    v.Append("|")
Next
Tables("销售清单").Cols("车牌号").Combolist = v.Tostring
 

原理参考:

http://help.foxtable.com/topics/2097.htm


 
不过3000个列表项目,似乎没有实际的意义,会不会太多了?

 

 


--  作者:dd-zdh
--  发布时间:2011/5/31 12:40:00
--  

因为我有个标准工位(3000多条),就想用这种功能进行查找


--  作者:狐狸爸爸
--  发布时间:2011/5/31 13:45:00
--  
改用7楼方法,现在是几秒钟?
--  作者:ddlzq
--  发布时间:2011/5/31 15:20:00
--  
以下是引用狐狸爸爸在2011-5-30 16:22:00的发言:

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.Connection Name = "数据源名称"
cmd.CommandText = "SELECT distinct 车牌号,客户 From {客户表} "
dt = cmd.ExecuteReader
Dim v as string

For Each dr As DataRow in dt.DataRows

     v = v & dr("车牌号") & " " & dr("客户") & “|”

Next

Tables("销售清单").Cols("车牌号").Combolist = v

如果想在cols("车牌号).combolist 下拉选择时,同时显示车牌号和对应的客户,而填入到车牌号单元格中的值则只取车牌号,如何设置代码?


--------------------------------

ValidateEdit事件输入值来校验应该可以

通过数据分隔符号来判断输入的值 ,比如车牌号列表值为: 京P12345-刘德华 可以使用ValidateEdit来通过 "-"分隔符来去掉-号与后面的值,具体代码如何写,还得各位老师帮出主意了.呵呵



另外我试,1500行数据,几乎不到一秒,很快的

[此贴子已经被作者于2011-5-31 15:20:15编辑过]

--  作者:狐狸爸爸
--  发布时间:2011/5/31 15:29:00
--  
你可以在DataColChanging事件中设置代码,判断输入的内容是否包括空格,如果有空格,取空格之前的字符,就是车牌号了。