以文本方式查看主题

-  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=42233)

--  作者:owenlyx
--  发布时间:2013/11/6 17:22:00
--  疑问?

请问为什么在prepareedit 里面用 以下语句运行速度会非常的慢?是什么原因了?

 

\'If e.Col.name ="始发地" Then
\'Dim cmd As new SQLCommand
\'Dim dt As DataTable
\'cmd.C
\'cmd.CommandText ="select * from{数据表}"
\'dt=cmd.ExecuteReader()
\'e.Col.ComboList = dt.GetComboListString("数据名称","数据类型 = \'收发货地点\'")
\'End If
\'
\'\'---------------------------------------------------
\'
\'If e.Col.name="条码号" Then
\'Dim cmd As new SQLCommand
\'Dim dt As DataTable
\'cmd.C
\'cmd.commandtext = "select * from {条码库信息} where 条码号 = \'" & e.Table.current("条码号") & "\'"
\'dt=cmd.ExecuteReader
\'If dt.DataRows.Count >0 Then
 \'
\'Dim dr As DataRow = dt.DataRows(0)
\'Dim r As Row = Tables("入库表").current
   \'r("条码号") = dr("条码号")
   \'r("品牌") = dr("品牌")
   \'r("产品类型") = dr("产品类型")
   \'r("尺码")=dr("尺码")
   \'r("颜色")=dr("颜色")
\'End If
\'End If
\'


--  作者:狐狸爸爸
--  发布时间:2013/11/6 17:34:00
--  

1、你这个执行了Select语句,肯定慢的,特别是远程的时候,等于没进入一个单元格,都要执行一次sql查询,生成一个临时表,然后再取不重复值。

2、而且你明明只需要生成下拉列表,只需一列的数据,可是你却Select *,也就是查询所有所属,至少应该改为: Select 列名 where 条件,但这不最重要的原因。

 

建议,打开项目的时候,将这个表的此列数据全部加载到一个dataTable中,以后都从这个dataTable取值生成下拉列表,不用每次都执行sql查询。

 

 

[此贴子已经被作者于2013-11-6 17:34:00编辑过]