我有一个计算模块,运算速度成了一个难题,我的数据表里只有不到6万条数据,但是计算需要30多分钟。我想请教的问题是:还有没有比我的代码运算速度更快的方法。谢谢指教!
DataTables("实时工序计算表").LoadFilter = ""
DataTables("实时工序计算表").load()
Dim zl As Double
Dim js As Integer
Dim tms As New List(Of String)
Dim gxs As New List(Of String)
'数据升序排序
Tables("ddqdb").Sort = "清单条码编码"
Tables("实时工序计算表").Sort = "清单条码编码"
Dim er As DataRow
er = DataTables("实时工序计算表").DataRows(0)
Dim qm As String
qm = er("清单条码编码")
'筛选ddqdb
DataTables("ddqdb").LoadFilter = "[清单条码编码]>= '" & qm & "'"
DataTables("ddqdb").load()
Dim Arys As List(Of String())
Arys = DataTables("实时工序计算表").GetValues("清单条码编码|工序名称")
For Each Ary As String() In Arys
Dim pr As DataRow = DataTables("ddqdb").find("清单条码编码='" & Ary(0) & "'")
'MessageBox.Show(ary(0), ary(1))
If pr IsNot Nothing Then
zl = pr("重量")
js = pr("件每台") * pr("台数")
Dim gxhs As Double = DataTables("实时工序计算表").Compute("Sum(实际耗时)", "清单条码编码= '" & Ary(0) & "' and 工序名称='" & Ary(1) & "'")
'查询符合条件的多条记录
For Each dts As DataRow In DataTables("实时工序计算表").Select("清单条码编码= '" & Ary(0) & "' and 工序名称='" & Ary(1) & "'")
If dts IsNot Nothing Then
dts("已分劈") = "f"
Dim dhs As Double = dts("实际耗时")
dts("重量") = Round2(dhs / gxhs * zl, 2)
dts("件数") = Round2(dhs / gxhs * js, 2)
Else
MessageBox.Show("查无数据")
End if
Next
End If
Next
MessageBox.show("计算完毕!", "提示!")
e.Form.Close
MainTable = Tables("实时工序计算表")