以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  对datatable表处理更新时间过长咨询  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=190308)

--  作者:z769036165
--  发布时间:2024/1/30 18:33:00
--  对datatable表处理更新时间过长咨询
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
--  发布时间:2024/1/30 19:26:00
--  
问题解决了,查询和赋值在一个循环里面就这样,用字典把值拿出来处理就飞快了