Foxtable(狐表)用户栏目专家坐堂 → 对datatable表处理更新时间过长咨询


  共有1329人关注过本帖树形打印复制链接

主题:对datatable表处理更新时间过长咨询

帅哥,在线噢!
z769036165
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
对datatable表处理更新时间过长咨询  发帖心情 Post By:2024/1/30 18:33:00 [只看该作者]

Dim dt As DataTable = DataTables("库存")
Dim w As DataRow
st = Date.Now
Dim i As Integer
For Each dr As JToken In JArray.Parse(str)
    w = dt.Find("MATNR = '" & CStr(dr("MATNR")) & "' and LGORT = '" & CStr(dr("LGORT")) & "'")
    If w IsNot Nothing Then
        w("LABST") = CStr(dr("LABST")) '库存数量     
        w("SOBKZ") = CStr(dr("SOBKZ")) '特殊库存标识
        w("CHARG") = CStr(dr("CHARG")) '批次编号
        w("VBELN") = CStr(dr("VBELN")) '销售和分销凭证号
        w("POSNR") = CStr(dr("POSNR")) '销售和分销凭证的项目号
        w("PSPNR") = CStr(dr("PSPNR")) '工作分解结构要素 (WBS 要素)
        w("POSID") = CStr(dr("POSID")) '字符字段长度24
        w("KUNNR") = Cstr(dr("KUNNR")) '客户编号
        w("LIFNR") = Cstr(dr("LIFNR")) '供应商或债权人的帐号
        w("WERKS") = CStr(dr("WERKS")) '工厂
        i += 1
        If (Date.Now - st).TotalSeconds > 10 Then
            Output.Show(i)
            Return Nothing
        End If 
    Else
    End If
Next
Output.Show("处理库存表时间:" & (Date.Now - st).TotalSeconds)
上述代码发现红色部分更新表数据特别慢,这1W条数据需要更新800秒以上,这之前都没这么慢的啊,不知道怎么变这么慢呢?去掉红色部分的更新,瞬间处理掉了,内容都是字符,列也是16位字符

 回到顶部
帅哥,在线噢!
z769036165
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:三尾狐 帖子:760 积分:5430 威望:0 精华:0 注册:2012/10/5 21:53:00
  发帖心情 Post By:2024/1/30 19:26:00 [只看该作者]

问题解决了,查询和赋值在一个循环里面就这样,用字典把值拿出来处理就飞快了

 回到顶部