以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- [求助]优化代码速度 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=59441) |
-- 作者:lshshlxsh -- 发布时间:2014/11/4 14:11:00 -- [求助]优化代码速度 以下代码能正常执行,但就是速度太慢,如果有200条数据的话要执行好几分钟,请教老师,帮我优化一下 For Each dr As DataRow In DataTables("表D").Datarows For Each dc As DataCol In DataTables("表D").DataCols Dim gx As String gx=dc.name If gx <>"姓名" And gx <>"单据编号" And gx <> "员工编号" And gx <> "生产任务单号" Then If dr(gx) > 0 And dr("姓名") <> "可申报最大数量" Then dr(gx) = math.Floor( dr(gx) * 10000) / 10000 \'取小数位前四位 Dim dr1 As DataRow = DataTables("工资明细表").Addnew dr1("生产任务单号") = scrwdh.Value dr1("单据编号") = dr("单据编号") dr1("员工编号") = dr("员工编号") dr1("工序名称") = gx dr1("数量") = dr(gx) dr1("销售订单号") = xsddh.Value dr1("产品名称") = cpmc.Value dr1("工资日期") = gzrq.Value dr1("单据类型") = djlx.Value dr1("工资所属车间") = cjmc.Value dr1("制单时间") = zdsj.Value End If End If Next Next |
-- 作者:Bin -- 发布时间:2014/11/4 14:16:00 -- 上个例子方便测试. |
-- 作者:有点甜 -- 发布时间:2014/11/4 14:29:00 -- 说明你的逻辑,你原本想做什么的?
|
-- 作者:lshshlxsh -- 发布时间:2014/11/4 14:55:00 -- 将一张表的内容写到另一张表,表D的列名, 写到了工资明细表 工序名称字段 ,数量也就写到数量字段 |
-- 作者:有点甜 -- 发布时间:2014/11/4 14:59:00 -- 如果你执行的结果是正确的,遍历肯定会慢。
最多控制一下刷新
http://www.foxtable.com/help/topics/0401.htm
|
-- 作者:y2287958 -- 发布时间:2014/11/4 15:12:00 -- 上例子吧 肯定会另有方法的
|
-- 作者:有点甜 -- 发布时间:2014/11/4 15:17:00 -- 这个应该是没办法的,200行,如果有20列的话,就相当于增加4000行数据了
但是几分钟也就太慢了。看5楼,再试试这个 http://www.foxtable.com/help/topics/2218.htm
|
-- 作者:lshshlxsh -- 发布时间:2014/11/4 15:24:00 -- 上图为表D 下图为工资明细表 [此贴子已经被作者于2014-11-5 8:08:34编辑过]
|
-- 作者:有点甜 -- 发布时间:2014/11/4 15:26:00 -- 看楼上 |
-- 作者:lshshlxsh -- 发布时间:2014/11/4 15:29:00 -- 我是指插入后总数据有240多条吧,需要3分钟左右 |