以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 关于数据处理后台进行 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=132999) |
-- 作者:jackchan120925 -- 发布时间:2019/4/3 17:29:00 -- 关于数据处理后台进行 请问下, 我系统上有表A 和 表B 两张表,各一万行,俩表之间进行运算,利用 sqfind 等语句,但是开始运算到结束,系统就在那边一直不能动了? 可以把运算放到数据库进行然后不影响系统的其他使用吗 |
-- 作者:wei0769 -- 发布时间:2019/4/3 17:44:00 -- 看下帮助里的优化
此主题相关图片如下:微信截图_20190403174445.png [此贴子已经被作者于2019/4/3 17:45:06编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/4/3 18:36:00 -- 大数据量,不要用sqlfind,每执行一次sqlfind,耗时0.5秒左右。
具体具体问题,做实例发上来测试。 |
-- 作者:jackchan120925 -- 发布时间:2019/4/3 19:55:00 -- 本质上就是两种表格之间利用 sqlfind函数相互调取数据进行计算,然后保存到其中的一张表中。代码如图,麻烦看下哈。 代码执行起来非常费时间,行数稍微多一点的话。
[此贴子已经被作者于2019/4/3 19:56:47编辑过]
|
-- 作者:有点甜 -- 发布时间:2019/4/3 20:11:00 -- 如果频繁使用sqlfind、sqlcompute,建议把数据先全部加载,然后再执行find、compute,效率高很多 |
-- 作者:jackchan120925 -- 发布时间:2019/4/10 11:34:00 -- 谢谢,还有一个就是关于导入,我经常会有大批量的excel表格数据导入,用的是如下体系的代码,运行非常费时间,不知能否优化 If dlg.ShowDialog = DialogResult.Ok Then \'如果用户单击了确定按钮 Dim app As new msexcel.application Dim wb As msexcel.workbook = app.workbooks.open(dlg.filename) Dim ws1 As msexcel.worksheet = wb.worksheets(1) Dim rg1 As msexcel.range=ws1.usedrange Dim ary1 =rg1.value Tables("中外运理货表").stopRedraw() For n1 As Integer=3 To rg1.Rows.count Dim ra1 As DataRow =DataTables("中外运理货表").addnew() ra1("操作_导入批次")= pc ra1("操作_状态")= "理货前-新增" ra1("规格")=ary1(n1, 6) ra1("货号")=ary1(n1,4) ra1("理货结果_缠绕膜")=ary1(n1,34) ra1("理货结果_长")=ary1(n1,27) ra1("理货结果_点货数量")=ary1(n1,21) ra1("理货结果_高")=ary1(n1,29) ra1("理货结果_净重")=ary1(n1,30) ra1("理货结果_库位")= ary1(n1,26) ra1("理货结果_宽")= ary1(n1,28) ra1("理货结果_破损表述")= ary1(n1,24) ra1("理货结果_气泡柱")= ary1(n1,33) ra1("理货结果_日期")= ary1(n1,22) ra1("理货结果_实际撕标数量")= ary1(n1,31) ra1("理货结果_实际贴标数量")= ary1(n1,32) ra1("理货结果_条形码")= ary1(n1,20) ra1("理货结果_托盘号")= ary1(n1,25) ra1("理货结果_性质")= ary1(n1,23) ra1("理货中_WMS中匹配条码")= ary1(n1,10) ra1("理货中_缠绕膜")= ary1(n1,19) ra1("理货中_长")= ary1(n1,12) ra1("理货中_二维码贴标")= ary1(n1,16) ra1("理货中_高")= ary1(n1,14) ra1("理货中_净重")= ary1(n1,15) ra1("理货中_宽")= ary1(n1,13) ra1("理货中_气泡柱")= ary1(n1,18) ra1("理货中_实际点数及日期")= ary1(n1,11) ra1("理货中_撕标")= ary1(n1,17) Dim pzm As String = ary1(n1,3) Dim txm As String = ary1(n1,2) If pzm > "" Then ra1("理论PZ码")= pzm.trimstart("p", "z", "n") Else ra1("理论PZ码")= "" End If If txm > "" Then ra1("理论条形码")= txm.trimstart("p", "z", "n") Else ra1("理论条形码")= "" End If ra1("理论净重")= ary1(n1,9) ra1("理论日期")= ary1(n1,8) ra1("理论入库数据")= ary1(n1,7) ra1("日志_导入人")= user.name ra1("日志_导入时间")= ct ra1("项号")= ary1(n1,1) ra1("中文品名")= ary1(n1,5) ra1.locked=True ra1.save |
-- 作者:有点甜 -- 发布时间:2019/4/10 11:40:00 -- 试试加入 stopredraw 和 systemready
http://www.foxtable.com/webhelp/scr/0401.htm
http://www.foxtable.com/webhelp/scr/2218.htm
|