Dim cq As String = Forms("盘点核销").Controls("ComboBox1").Value
Dim fr As DataRow
Dim txt As String = Forms("盘点核销").Controls("TextBox1").Value
Dim Filter1 As String
Filter1 = "[盘点部门] = '" & cq & "'and [盘点单号] = '" & txt & "'"
DataTables("盘点单据").LoadFilter = Filter1
DataTables("盘点单据").Load ’这个三行加载“盘点单据”数据的代码,实际执行效果,只加载数据200条,超过200条数据并无加载;
’核销功能检索盘点单号和盘点部门相同的数据,并取对应盘点的是什么商品
Dim fbs As List(Of String) = DataTables("盘点单据").GetValues("商品编码",Filter1) '找到本次盘点的所有商品 ‘GetValues语句也仅从加载的200条数据取值,超过的不取值
‘这个用sqlGetValues是否能解决,但执行效率是否会大幅度变慢??
For Each fb As String In fbs
Dim syms As List(of DataRow) = DataTables("溯源码").SQLSelect("当前所在部门 = '" & cq & "' And 是否可用 = 1 And 商品编码 = '" & fb & "'") '找到溯源码中盘点商品的溯源码
For Each sym As DataRow In syms
fr = DataTables("盘点单据").Find("[溯源码] = '" & sym("子溯源码") & "'") '这个循环语句执行的也仅是加载的200条数据里面执行,超过200条数据不执行。
这个用sqlfind是否能解决,但执行效率是否会大幅度变慢??
If fr IsNot Nothing Then
' sym("是否可用") = 1
fr("审核人") = dr("姓名")
fr("审核日期") = Date.Now '如果存在审核盘点单据
Else
Dim wb As Row = Tables("外部出库").AddNew()
sym("是否可用") = 0
wb("溯源码" ) = sym("子溯源码")
wb("出库部门") = sym("当前所在部门")
wb("出库时间") = Date.Now
wb("单据类型") = "销售单"
wb("是否拆箱") = sym("是否拆箱")
wb("出库人") = yh("姓名")
wb("核销人") = dr("姓名") '不存在添加销售单据
End If
Next
DataTables("溯源码").SQLUpdate(syms) '更新数据库溯源码表中的是否可用状态
Next
DataTables("外部出库").Save()
DataTables("盘点单据").Save()
MessageBox.Show("核销成功!", "提示")
Dim btn As WinForm.Button = Forms("盘点核销").Controls("Button1")
btn.PerformClick()
e.Form.Close
Else
Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
End If
End If
老师上面的代码能否整体帮我做下优化,保障不限数据条数限制可以核销,同时执行效率最优,万分感谢