以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- SQLFind与find ,SQLCompute与Compute区别 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=93652) |
-- 作者:yancheng -- 发布时间:2016/12/3 13:27:00 -- SQLFind与find ,SQLCompute与Compute区别 Sel ect Case e.DataCol.name Case "审核" If e.DataRow("结帐") = False Then Dim dr As DataRow = e.DataRow Dim dr1 As DataRow = DataTables("洽商汇总").SQLFind("合同编号= \'" & dr("合同编号") & "\'") If dr1 IsNot Nothing Then dr("洽商增加预算额")=DataTables("洽商汇总").SQLCompute("sum(洽商增加预算额)","合同编号= \'" & dr("合同编号") & "\'") dr("洽商增加结算额")=DataTables("洽商汇总").SQLCompute("sum(洽商增加结算额)","合同编号= \'" & dr("合同编号") & "\'") dr("洽商减少预算额")=DataTables("洽商汇总").SQLCompute("sum(洽商减少预算额)","合同编号= \'" & dr("合同编号") & "\'") dr("洽商减少结算额")=DataTables("洽商汇总").SQLCompute("sum(洽商减少结算额)","合同编号= \'" & dr("合同编号") & "\'") Else dr("洽商增加预算额")=0 dr("洽商增加结算额")=0 dr("洽商减少预算额")=0 dr("洽商减少结算额")=0 End If Dim dr2 As DataRow = DataTables("设计汇总").SQLfind("合同编号 = \'" & e.DataRow("合同编号") & "\'") If dr2 IsNot Nothing Then dr("设计费预算")=DataTables("设计汇总").SQLCompute("sum(设计费预算)","合同编号=\'" & e.DataRow("合同编号") & "\'") dr("设计费结算")=DataTables("设计汇总").SQLCompute("sum(设计费结算)","合同编号=\'" & e.DataRow("合同编号") & "\'") Else dr("设计费预算")=0 dr("设计费结算")=0 End If 我之前一直用的:find和Compute。现在把代码的前都加上了:SQL 来:切换 到表后,重置:审核 列,来计算。(下面还有20行左右的同样的代码来计算其它值 ) 原来切换表时:4秒左右吧。现在加上SQL直接死机了。 原来以为加上SQL会更快,目的就是加快速度。 请问怎么写好。
[此贴子已经被作者于2016/12/3 13:28:28编辑过]
|
-- 作者:有点蓝 -- 发布时间:2016/12/3 14:10:00 -- SQLCompute是到后台数据库取值用的,对应的是数据不加载完整的情况。不是用来解决速度问题的。后台取值操作一般更慢 你这样情况只能从业务逻辑层面来改进了。不要动不动就重置计算
|