以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]导入大量数据引起系统卡顿,该如何解决?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=103620)

--  作者:magus1123
--  发布时间:2017/7/12 17:28:00
--  [求助]导入大量数据引起系统卡顿,该如何解决?
现在情况是这样的,麻烦老师帮忙看看

有三张表格,分别是“当前库存”、“销售分析”、“产品规格”,每张表格都是当天用Excel导入,数据量大概在每张7000行左右,每次图片点击可在新窗口打开查看运算完成后再把这三张表的数据清空,次日再重新上传新的数据。
另外两张表格是“产品供应商”(用于设置不同产品所属的供应商)和“供应商设置”(用于设置每个供应商的信息)
“产品供应商”中的数据需要引用“供应商设置”中的数据。

当开发阶段数据量只有几十一百的时候使用起来很流畅,但是导入我们真实数据之后系统反应很慢,尤其是设置产品供应商的时候,直接卡死了。。

这种情况应该怎么处理比较好呢?

谢谢老师!

[此贴子已经被作者于2017/7/22 1:14:40编辑过]

--  作者:magus1123
--  发布时间:2017/7/12 18:13:00
--  
试验了半天都解决不了,导入数据后在设置供应商那里重置“供应商”一列就直接死机了图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2017/7/12 21:16:00
--  

不要重置列,改成一个按钮实现具体内容

 

For Each ary() As String In DataTables("产品供应商").GetValues("品名|供应商")
    Dim filter As String = "品名=\'" & ary(0) & "\' And 供应商=\'" & ary(1) & "\'"
    Dim sum As Double = DataTables("产品供应商").Compute("Sum(日均销量)",filter)
    If sum > 0 Then
        For Each dr1 As DataRow In DataTables("产品供应商").Select(filter)
            dr1("标准库存天数") = dr1("供应商起订量") / sum
        Next
    End If
Next


--  作者:magus1123
--  发布时间:2017/7/12 21:43:00
--  
感谢老师!该问题已成功解决!


--  作者:magus1123
--  发布时间:2017/7/12 21:46:00
--  
还有一个问题想请教老师

现在这三种源数据表“当前库存”、“销售分析”、“规格列表”,我是通过高速合并功能来更新的
有没有办法可以做成一个窗口实现三个按钮代码分别清空原表,导入新的Excel表数据进去呢?


--  作者:有点甜
--  发布时间:2017/7/12 22:37:00
--  

可以,参考

 

Dim dlg As new OpenFileDialog
dlg.Filter = "excel|*.xls;*.xlsx"
If dlg.ShowDialog = DialogResult.OK Then

    DataTables("订单").DataRows.Clear
    Dim mg As New Merger
    mg.SourcePath = dlg.FileName
    mg.Format = "excel" \'指定格式
    mg.SourceTableName = "订单$" \'指定要合并的表
    mg.DataTableName = "订单" \'指定接收数据的表
    mg.Merge() \'开始合并
End If


--  作者:magus1123
--  发布时间:2017/7/13 0:26:00
--  
非常感谢老师的指导!!