Foxtable(狐表)用户栏目专家坐堂 → [求助]RaiseDataColChanged如何能提高刷新效率


  共有14280人关注过本帖树形打印复制链接

主题:[求助]RaiseDataColChanged如何能提高刷新效率

帅哥哟,离线,有人找我吗?
ddlzq
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
[求助]RaiseDataColChanged如何能提高刷新效率  发帖心情 Post By:2011/5/26 19:21:00 [只看该作者]

If e.DataCol.Name = "内部合同号" 
    Dim cmd As New SQLCommand   
    Dim dr As DataRow = e.DataRow
    cmd.C
    cmd.CommandText = "SELECT Max(生产_生产预计完成时间) From {供应链管理表} Where [供应链部_内部订单号] = '" & dr("内部合同号")& "'"    
     If cmd.ExecuteScalar() <> Nothing Then
        dr("订货日期记录_生产预计完成时间") = cmd.ExecuteScalar()
End If    
    Else
       End If

按钮刷新
DataTables("订货记录表").DataCols("内部合同号").RaiseDataColChanged()

----------------------------------
各位老师,我做了个按钮,见代码[按钮刷新],为何一万九千行,刷一次列要近十分钟尼,有老师有啥好办法啊

 回到顶部
帅哥哟,离线,有人找我吗?
mr725
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/5/26 19:34:00 [只看该作者]

每行只要0.032秒,速度还可以了,只是你为何要这样处理呢?


 回到顶部
帅哥哟,离线,有人找我吗?
czy
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33963 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2011/5/26 20:01:00 [只看该作者]

内部合同号都是唯一的吗?如果不是唯一的,这样的重算没什么意义。

如果速度真的很慢,又需要重算你可以考虑用ExecuteNonQuery方法


 回到顶部
帅哥哟,离线,有人找我吗?
狐狸爸爸
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/26 22:38:00 [只看该作者]

这样快不了的,应该可以用SQL语句一次搞定,去专业的SQL论坛问问手,csdn上的SQL SERVER栏目上就有不少高手的,下面的肯定不行,只是一个思路:
 
Update {订货记录表} Set [订货日期记录_生产预计完成时间] = (SELECT Max(生产_生产预计完成时间) From {供应链管理表} Where [供应链部_内部订单号] =  订货记录表.内部合同号)

 回到顶部
帅哥哟,离线,有人找我吗?
ddlzq
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/27 13:38:00 [只看该作者]

 图片点击可在新窗口打开查看 Post By:2011-5-26 19:34:00 [只看该作者

每行只要0.032秒,速度还可以了,只是你为何要这样处理呢?


---------------哦,这个由于订货记录表先下单,那个生产预计完成时间流程在后,所以经常刷是否有该单的数据补充,所以要这样算


 回到顶部
帅哥哟,离线,有人找我吗?
ddlzq
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/27 13:39:00 [只看该作者]

图片点击可在新窗口打开查看 Post By:2011-5-26 20:01:00 [只看该作者

内部合同号都是唯一的吗?如果不是唯一的,这样的重算没什么意义。

如果速度真的很慢,又需要重算你可以考虑用ExecuteNonQuery方法


-------------合同号是唯一的,但一个合同会有多种产品都挂这个合同号,所以更新时要把每种产品只要是这个合同号的都刷出生产预计完成时间.

 回到顶部
帅哥哟,离线,有人找我吗?
ddlzq
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:418 积分:3209 威望:0 精华:0 注册:2010/2/24 13:33:00
  发帖心情 Post By:2011/5/27 13:40:00 [只看该作者]

  图片点击可在新窗口打开查看 Post By:2011-5-26 22:38:00 [只看该作者

这样快不了的,应该可以用SQL语句一次搞定,去专业的SQL论坛问问手,csdn上的SQL SERVER栏目上就有不少高手的,下面的肯定不行,只是一个思路:
 
Update {订货记录表} Set [订货日期记录_生产预计完成时间] = (SELECT Max(生产_生产预计完成时间) From {供应链管理表} Where [供应链部_内部订单号] =  订货记录表.内部合同号)

-----------感谢狐爸,我试试用update,上次问过返写到后台表中用update的确挺快,我试下这次有没有效果.感谢您的建议

 回到顶部