以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]RaiseDataColChanged如何能提高刷新效率  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=10239)

--  作者:ddlzq
--  发布时间:2011/5/26 19:21:00
--  [求助]RaiseDataColChanged如何能提高刷新效率
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
--  发布时间:2011/5/26 19:34:00
--  

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


--  作者:czy
--  发布时间:2011/5/26 20:01:00
--  

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

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


--  作者:狐狸爸爸
--  发布时间:2011/5/26 22:38:00
--  
这样快不了的,应该可以用SQL语句一次搞定,去专业的SQL论坛问问手,csdn上的SQL SERVER栏目上就有不少高手的,下面的肯定不行,只是一个思路:
 
Update {订货记录表} Set [订货日期记录_生产预计完成时间] = (SELECT Max(生产_生产预计完成时间) From {供应链管理表} Where [供应链部_内部订单号] =  订货记录表.内部合同号)
--  作者:ddlzq
--  发布时间:2011/5/27 13:38:00
--  
 图片点击可在新窗口打开查看 Post By:2011-5-26 19:34:00 [只看该作者

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


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


--  作者:ddlzq
--  发布时间:2011/5/27 13:39:00
--  
图片点击可在新窗口打开查看 Post By:2011-5-26 20:01:00 [只看该作者

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

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


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

--  作者:ddlzq
--  发布时间: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的确挺快,我试下这次有没有效果.感谢您的建议