以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 执行速度很慢,请老师优化! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=14108) |
||||
-- 作者:20090530 -- 发布时间:2011/11/8 17:09:00 -- 执行速度很慢,请老师优化! 烦请优化:
If (e.DataCol.name="文化程度" Or e.DataCol.name="等级" Or e.DataCol.name="专业") And e.DataRow("姓名")<>Nothing .ReplaceFor("等级1", 0,"[姓名]<>\' \'") .ReplaceFor("专业1", 0,"[姓名]<>\' \'") End With Dim dr As DataRow=e.DataRow End If
慢的原因是?谢谢! |
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/11/8 17:13:00 -- 传表,说明设计目的设计思路。 |
||||
-- 作者:20090530 -- 发布时间:2011/11/8 17:39:00 -- 根据文化程度、等级、专业的分类赋予文化程度1、等级1、专业1相应的值,并求出文化程度1、等级1、专业1的最大值。谢谢! |
||||
-- 作者:程兴刚 -- 发布时间:2011/11/8 17:49:00 -- 最好上传文件,换思路也许更好,这样重复地执行ReplaceFor不如遍历所有行,最好是看看RaiseDataColChanged这样应该更快,搞不定的话上传文件! |
||||
-- 作者:hhbb -- 发布时间:2011/11/8 18:07:00 -- 這樣的設計,慢是必然的:相應每一行的變化,都要更新全表(其實只更新變化的行就行)!
|
||||
-- 作者:20090530 -- 发布时间:2011/11/8 19:06:00 -- 以下是引用20090530在2011-11-8 17:39:00的发言:
根据文化程度、等级、专业的分类赋予文化程度1、等级1、专业1相应的值,并求出文化程度1、等级1、专业1的最大值。谢谢!
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/11/9 8:06:00 -- 感觉你是怎么慢就怎么来,你这样写,速度比正常速度慢了何止千倍万倍。 下面是正常的代码:
Select Case e.DataCol.Name
建议你细看开发指南中的《编程基础》和《foxtable编程》这两章,当然《使用指南》也必须看透,因为会用是开发的基础。 [此贴子已经被作者于2011-11-9 8:08:19编辑过]
|
||||
-- 作者:20090530 -- 发布时间:2011/11/9 8:06:00 -- 附件如下
|
||||
-- 作者:狐狸爸爸 -- 发布时间:2011/11/9 8:09:00 -- 看7楼 |
||||
-- 作者:20090530 -- 发布时间:2011/11/9 8:18:00 -- 您的是很快,我当初也用select case就是没您的简化:
If (e.DataCol.name="xl" Or e.DataCol.name="dj" Or e.DataCol.name="zc") And e.DataRow("xm") <> Nothing Dim dj As String Dim zc As String Dim pp As DataRow=e.DataRow Select Case dr Select Case dj Select Case zc pp("maxl") = math.max( math.max(pp("xl1"),pp("dj1")),pp("zc1"))
因记录少,没比较速度,我后面想replacefor 类似于foxpro的replace,就改用了replacefor ,请教速度慢的原因? |