以文本方式查看主题

-  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函数相互调取数据进行计算,然后保存到其中的一张表中。代码如图,麻烦看下哈。


图片点击可在新窗口打开查看此主题相关图片如下:dim pc as string_页面_1.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:dim pc as string_页面_2.jpg
图片点击可在新窗口打开查看


图片点击可在新窗口打开查看此主题相关图片如下:dim pc as string_页面_3.jpg
图片点击可在新窗口打开查看


代码执行起来非常费时间,行数稍微多一点的话。

[此贴子已经被作者于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