以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]关于后台数据更新问题  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=117621)

--  作者:沪上游客
--  发布时间:2018/4/16 12:54:00
--  [求助]关于后台数据更新问题
老师您好!

以下是我在表的BeforeSaveDataRow代码,现在我在保存新记录行的时候,系统就死机了。我知道这些代码执行是把所有的记录全部更新一下,占用很多的电脑资源造成的。请问一下,我能否针对所编缉的记录(以“支出合同编号”)的更新?代码应该怎么写?
谢谢老师!
For Each dr As DataRow In DataTables("支出合同收支表").datarows
    Dim spje As Decimal
    spje = DataTables("支出合同收支表").Compute("Sum(金额)","支出合同编号 = \'" & dr("支出合同编号") & "\'And [类别] = \'收票\'")
    DataTables("支出合同基础数据").SQLReplaceFor("已收发票金额",spje,"支出合同编号 = \'" & dr("支出合同编号") & "\'")
    DataTables("支出合同基础数据").SQLReplaceFor("应开发票数","支出合同实际价款 - 已收发票金额","支出合同编号 = \'" & dr("支出合同编号") & "\'",True)
    Dim zcje As Decimal
    zcje = DataTables("支出合同收支表").Compute("Sum(金额)","支出合同编号 = \'" & dr("支出合同编号") & "\'And [类别] = \'支出\'")
    DataTables("支出合同基础数据").SQLReplaceFor("已付款金额",zcje,"支出合同编号 = \'" & dr("支出合同编号") & "\'")
    DataTables("支出合同基础数据").SQLReplaceFor("应付款余额","已收发票金额 - 已付款金额","支出合同编号 = \'" & dr("支出合同编号") & "\'",True)
    For Each drz As DataRow In DataTables("支出合同基础数据").datarows
        Dim s As Decimal
        s = DataTables("支出合同基础数据").SQLCompute("Sum(已收发票金额)","主合同编号 = \'" & drz("主合同编号") & "\'")
        DataTables("工程合同基础数据").SQLReplaceFor("支出合同应付款_应付总额",s,"合同编号 = \'" & dr("主合同编号") & "\'")
        Dim z As Decimal
        z = DataTables("支出合同基础数据").SQLCompute("Sum(已付款金额)","主合同编号 = \'" & drz("主合同编号") & "\'")
        DataTables("工程合同基础数据").SQLReplaceFor("支出合同应付款_已付数",z,"合同编号 = \'" & dr("主合同编号") & "\'")
        DataTables("工程合同基础数据").SQLReplaceFor("支出合同应付款_应付余额","支出合同应付款_应付总额 - 支出合同应付款_已付数","合同编号 = \'" & dr("主合同编号") & "\'",True)
    Next
Next

--  作者:有点甜
--  发布时间:2018/4/16 14:43:00
--  

Dim dr = e.DataRow
Dim spje As Decimal
spje = DataTables("支出合同收支表").Compute("Sum(金额)","支出合同编号 = \'" & dr("支出合同编号") & "\'And [类别] = \'收票\'")
DataTables("支出合同基础数据").SQLReplaceFor("已收发票金额",spje,"支出合同编号 = \'" & dr("支出合同编号") & "\'")
DataTables("支出合同基础数据").SQLReplaceFor("应开发票数","支出合同实际价款 - 已收发票金额","支出合同编号 = \'" & dr("支出合同编号") & "\'",True)
Dim zcje As Decimal
zcje = DataTables("支出合同收支表").Compute("Sum(金额)","支出合同编号 = \'" & dr("支出合同编号") & "\'And [类别] = \'支出\'")
DataTables("支出合同基础数据").SQLReplaceFor("已付款金额",zcje,"支出合同编号 = \'" & dr("支出合同编号") & "\'")
DataTables("支出合同基础数据").SQLReplaceFor("应付款余额","已收发票金额 - 已付款金额","支出合同编号 = \'" & dr("支出合同编号") & "\'",True)

Dim s As Decimal
s = DataTables("支出合同基础数据").SQLCompute("Sum(已收发票金额)","主合同编号 = \'" & dr("主合同编号") & "\'")
DataTables("工程合同基础数据").SQLReplaceFor("支出合同应付款_应付总额",s,"合同编号 = \'" & dr("主合同编号") & "\'")
Dim z As Decimal
z = DataTables("支出合同基础数据").SQLCompute("Sum(已付款金额)","主合同编号 = \'" & dr("主合同编号") & "\'")
DataTables("工程合同基础数据").SQLReplaceFor("支出合同应付款_已付数",z,"合同编号 = \'" & dr("主合同编号") & "\'")
DataTables("工程合同基础数据").SQLReplaceFor("支出合同应付款_应付余额","支出合同应付款_应付总额 - 支出合同应付款_已付数","合同编号 = \'" & dr("主合同编号") & "\'",True)


--  作者:沪上游客
--  发布时间:2018/4/17 13:48:00
--  
谢谢老师,辛苦了!