以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- SQL跨表查询如何即能加快速度又能即时保存 (http://foxtable.net/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
|