以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  SQL跨表查询如何即能加快速度又能即时保存  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=110042)

--  作者:wakai
--  发布时间:2017/11/24 23:19:00
--  SQL跨表查询如何即能加快速度又能即时保存
SQLtable跨表查询
窗体AfterLoad代码
DataTables("合同_合同").DataCols("申请编号").RaiseDataColChanged()

表DataColChanged代码

Select Case e.DataCol.Name  

    Case "申请编号"

        Dim nms() As String = {"商品ID","订单数量","申购人","说明","订单明细号"}

        If e.NewValue Is Nothing Then

            For Each nm As String In nms

                e.DataRow(nm) = Nothing

            Next

        Else

            Dim dr As DataRow

            dr = DataTables("合同_包材申请表").Find("[申请编号] = \'" & e.NewValue & "\'")

            If dr IsNot Nothing

                For Each nm As String In nms

                    e.DataRow(nm) = dr(nm)

                Next

            End If

        End If

        

End Select

For Each dt As DataTable In DataTables

    dt.Save()


千条数据打开窗体就极慢,后来发现删除自动保存代码

For Each dt As DataTable In DataTables

    dt.Save()


速度至少可以提升一倍以上,只是不能修改即保存的功能,请教老师有什么更好方法


--  作者:有点蓝
--  发布时间:2017/11/25 8:34:00
--  
保存当前操作的表就可以了。没有必要保存整个项目的表。



--  作者:wakai
--  发布时间:2017/11/25 10:58:00
--  
就是写在当前表的DataColChanged中
只是在窗体AfterLoad,不断触发了DataColChanged
DataTables("合同_合同").DataCols("申请编号").RaiseDataColChanged()

--  作者:有点蓝
--  发布时间:2017/11/25 11:06:00
--  
去掉DataColChanged的保存代码

窗体AfterLoad代码
DataTables("合同_合同").DataCols("申请编号").RaiseDataColChanged()
DataTables("合同_合同").save

另外为什么打开窗口就要重置列,有必要每次都重置么。重置功能不要滥用

--  作者:wakai
--  发布时间:2017/11/25 16:13:00
--  
重置列是为了SQLtable的跨表查询
--  作者:有点甜
--  发布时间:2017/11/26 13:13:00
--  

保存慢的情况,参考

 

http://www.foxtable.com/bbs/dispbbs.asp?BoardID=2&ID=98689&skin=0