Dim st As String = e.Form.Controls("TextBox1").value
If st="" Then
messagebox.show("请输入导入批次号")
Return
End If
Dim drs As List (of DataRow) = DataTables("中外运理货表").sqlSelect("操作_导入批次=\'" & st & "\' and 操作_状态= \'理货前-新增\'")
Tables("中外运理货表").StopRedraw
If drs.count>0 Then
For Each dr As DataRow In drs
Dim dr1 As DataRow = DataTables("中外运考拉货品信息").SQLFind("商品条形码=\'" & dr("理论条形码") & "\'")
Dim dr2 As DataRow = DataTables("中外运考拉货品信息").SQLFind("商品条形码=\'" & dr("理论PZ码") & "\'")
Dim tm As String = ""
If dr1 IsNot Nothing Then
tm = dr1("商品条形码")
dr("理货中_WMS中匹配条码")= tm
dr("理货中_长")=dr1("长")
dr("理货中_宽")=dr1("宽")
dr("理货中_高")=dr1("高")
dr("理货中_净重")=dr1("重量")
ElseIf dr2 IsNot Nothing Then
tm = tm & "|" & dr2("商品条形码")
dr("理货中_WMS中匹配条码")= tm.TrimStart("|")
dr("理货中_长")=dr1("长")
dr("理货中_宽")=dr1("宽")
dr("理货中_高")=dr1("高")
dr("理货中_净重")=dr1("重量")
Else
dr("理货中_WMS中匹配条码")= Nothing
dr("理货中_长")=Nothing
dr("理货中_宽")=Nothing
dr("理货中_高")=Nothing
dr("理货中_净重")=Nothing
End If
dr("操作_状态")="理货前-已匹配系统内部产品信息"
dr.locked=True
dr.save
Next
End If
messagebox.show("1")
Tables("中外运理货表").ResumeRedraw
DataTables("中外运理货表").RemoveFor("操作_导入批次=\'" & st & "\' and 操作_状态=\'理货前-已匹配系统内部产品信息\'")
messagebox.show("2")
DataTables("中外运理货表").AppendLoad("操作_导入批次=\'" & st & "\' and 操作_状态=\'理货前-已匹配系统内部产品信息\'")
DataTables("中外运理货表").save
此主题相关图片如下:aa错误2.png

还有一个问题是:针对第一次的错误,如果我有一张表,有一列批次,一列状态,状态是个项目列表A,B,C. 如果设置某一行的状态值,那么所有批次相同的行也随之变成这一个状态值,请问有啥高效的方法吗?