以文本方式查看主题
- Foxtable(狐表) (http://foxtable.com/bbs/index.asp)
-- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2)
---- 求助优化一段代码 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=32934)
|
-- 作者:晕了快扶我
-- 发布时间:2013/5/10 17:12:00
-- 求助优化一段代码
If bname = "产品报价" Dim ids As String Dim dt As DataTable Dim cmd As New SQLCommand cmd.C cmd.CommandText ="select * from {产品报价主表}" dt = cmd.ExecuteReader For Each dr As DataRow In dt.DataRows ids = ids & ",\'" & dr("OPN") &"\'" Next ids= ids.Trim(",") Tables("产品报价选择_产品列表").DataTable.fill("Select * From {未报价物料查询} where 料号 not In (" & ids & ")","ERP",True) Dim i As Integer =Tables("产品报价选择_产品列表").DataTable.DataRows.Count With Tables("产品报价选择_产品列表").DataTable .LoadFilter = "料号 not In (" & ids & ")" .LoadTop = 15 .LoadPage = 0 .Load() e.Form.Controls("页码信息").Text= "共[" & .TotalPages & "] 页 ,当前为第[" & .LoadPage + 1 & "]页,共[" & i & "]行数据" End With With Tables("产品报价选择_产品列表") .MergeMode = MergeModeEnum.Free .MergeCols.Clear() .MergeCols.Add("品牌") .MergeCols.Add("供应商") .MergeCols.Add("品名") .MergeCols.Add("规格") .MergeCols.Add("料号") .MergeCols.Add("均价") .MergeSort = "品牌,供应商,品名" .AllowMerge = True .Cols("品牌").TextAlign = TextAlignEnum.Center .Cols("MOQ").TextAlign = TextAlignEnum.Center .Cols("供应商").TextAlign = TextAlignEnum.Center .Cols("单价").TextAlign = TextAlignEnum.Center .Cols("未税单价").TextAlign = TextAlignEnum.Center .Cols("均价").TextAlign = TextAlignEnum.Center .Cols("税率").TextAlign = TextAlignEnum.Center .DataTable.SysStyles("EmptyArea").BackColor = color.white .DataTable.DataCols("单价").SetFormat("##0.#####") .DataTable.DataCols("均价").SetFormat("##0.#####") .DataTable.DataCols("未税单价").SetFormat("##0.#####") .DataTable.DataCols("MOQ").SetFormat("#,####,###") .SetColVisibleWidth("品牌|80|供应商|90|未税单价|60|单价|60|均价|60|品名|120|规格|200|料号|190|MOQ|60|含税|40|税率|40") End With End If 卡得疯掉了,窗口的afterload事件,大概会卡3秒左右,求高手帮忙看看能不能优化的?
SQL2000和2005的数据库测试都有这个问题,PING 服务器无丢包现象,PING值少于1MS
|
-- 作者:Bin
-- 发布时间:2013/5/10 17:16:00
--
数据量多少?数据量大的话要等是没办法的事,只能弄个有好提示框.
|
-- 作者:晕了快扶我
-- 发布时间:2013/5/10 17:17:00
--
以下是引用Bin在2013-5-10 17:16:00的发言: 数据量多少?数据量大的话要等是没办法的事,只能弄个有好提示框.
15条数据,偶发性的,我在加载的时候同时间用PING在测试服务器的联通情况
|
-- 作者:Bin
-- 发布时间:2013/5/10 17:19:00
--
偶发性的?这么奇怪?例子发出来研究一下看看.15条数据不至于会这样的.
另外你查询的这个表有多少数据在数据库里? 你到数据库里查询这段拼接好的代码Select * From {未报价物料查询} where 料号 not In (" & ids & ")" 看看耗时
|
-- 作者:jspta
-- 发布时间:2013/5/10 17:23:00
--
以下是引用晕了快扶我在2013-5-10 17:12:00的发言:
If bname = "产品报价" Dim ids As String Dim dt As DataTable Dim cmd As New SQLCommand cmd.C cmd.CommandText ="select * from {产品报价主表}" dt = cmd.ExecuteReader For Each dr As DataRow In dt.DataRows ids = ids & ",\'" & dr("OPN") &"\'" Next ids= ids.Trim(",")
dim t as table = Tables("产品报价选择_产品列表") \'建议以后都进行代码定义,之后修改代码方便很多
t.StopRedraw
Tables("产品报价选择_产品列表").fill("Select * From {未报价物料查询} where 料号 not In (" & ids & ")","ERP",True) Dim i As Integer =Tables("产品报价选择_产品列表").DataTable.DataRows.Count
With Tables("产品报价选择_产品列表").DataTable .LoadFilter = "料号 not In (" & ids & ")" .LoadTop = 15 .LoadPage = 0 .Load() e.Form.Controls("页码信息").Text= "共[" & .TotalPages & "] 页 ,当前为第[" & .LoadPage + 1 & "]页,共[" & i & "]行数据" End With With Tables("产品报价选择_产品列表") .MergeMode = MergeModeEnum.Free .MergeCols.Clear() .MergeCols.Add("品牌") .MergeCols.Add("供应商") .MergeCols.Add("品名") .MergeCols.Add("规格") .MergeCols.Add("料号") .MergeCols.Add("均价") .MergeSort = "品牌,供应商,品名" .AllowMerge = True .Cols("品牌").TextAlign = TextAlignEnum.Center .Cols("MOQ").TextAlign = TextAlignEnum.Center .Cols("供应商").TextAlign = TextAlignEnum.Center .Cols("单价").TextAlign = TextAlignEnum.Center .Cols("未税单价").TextAlign = TextAlignEnum.Center .Cols("均价").TextAlign = TextAlignEnum.Center .Cols("税率").TextAlign = TextAlignEnum.Center .DataTable.SysStyles("EmptyArea").BackColor = color.white .DataTable.DataCols("单价").SetFormat("##0.#####") .DataTable.DataCols("均价").SetFormat("##0.#####") .DataTable.DataCols("未税单价").SetFormat("##0.#####") .DataTable.DataCols("MOQ").SetFormat("#,####,###") .SetColVisibleWidth("品牌|80|供应商|90|未税单价|60|单价|60|均价|60|品名|120|规格|200|料号|190|MOQ|60|含税|40|税率|40") End With End If
t.ResumeRedraw
卡得疯掉了,窗口的afterload事件,大概会卡3秒左右,求高手帮忙看看能不能优化的?
SQL2000和2005的数据库测试都有这个问题,PING 服务器无丢包现象,PING值少于1MS
加上这两条应该就够了
|
-- 作者:晕了快扶我
-- 发布时间:2013/5/10 17:27:00
--
我再研究一下,网络也要彻查一下,刚刚连续狂点五分钟后卡顿,服务器PING值到了1000多,郁闷,不知道是不是什么程序在局域网里发广播..
|
-- 作者:菲舍尔
-- 发布时间:2013/5/11 0:26:00
--
Dim dt As DataTable Dim cmd As New SQLCommand cmd.C cmd.CommandText ="select * from {产品报价主表}" dt = cmd.ExecuteReader
Tables("产品报价选择_产品列表").fill("Select * From {未报价物料查询} where 料号 not In (" & ids & ")","ERP",True)
一般sqlserver卡的话,都是这两条的问题,无解
|
-- 作者:晕了快扶我
-- 发布时间:2013/5/12 21:06:00
--
以下是引用菲舍尔在2013-5-11 0:26:00的发言:
Dim dt As DataTable Dim cmd As New SQLCommand cmd.C cmd.CommandText ="select * from {产品报价主表}" dt = cmd.ExecuteReader
Tables("产品报价选择_产品列表").fill("Select * From {未报价物料查询} where 料号 not In (" & ids & ")","ERP",True)
一般sqlserver卡的话,都是这两条的问题,无解
高手,这个有没有变通的办法解决呢?我仔细查了只要有Fill的地方真的都有这种偶发性的情况出现
|