Foxtable(狐表)用户栏目专家坐堂 → SQLFind与find ,SQLCompute与Compute区别


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

主题:SQLFind与find ,SQLCompute与Compute区别

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


加好友 发短信
等级:四尾狐 帖子:842 积分:5971 威望:0 精华:0 注册:2013/6/29 9:36:00
SQLFind与find ,SQLCompute与Compute区别  发帖心情 Post By:2016/12/3 13:27:00 [只看该作者]

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编辑过]

 回到顶部
帅哥,在线噢!
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106023 积分:539208 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2016/12/3 14:10:00 [只看该作者]

SQLCompute是到后台数据库取值用的,对应的是数据不加载完整的情况。不是用来解决速度问题的。后台取值操作一般更慢

你这样情况只能从业务逻辑层面来改进了。不要动不动就重置计算

 回到顶部