这样优化一下,只要您不进行插入行操作(建议该表取消设置插入标志列),系统运行一段时间后再度执行该代码,已经分配好的编号和规格序号不会被修改:
Dim mc As String = DataTables("药品信息表").GetComboListString("名称","","_Identify")
Dim dr As DataRow
Dim bh,gg As String
Dim Values() As String
Values = mc.split("|")
For Index As Integer = 0 To Values.Length - 1
dr = DataTables("药品信息表").Find("名称 = '" & Values(Index) & "'","_Identify",0) '从首行开始,以找到的第一个编号为准。
bh = dr("编号")
DataTables("药品信息表").ReplaceFor("编号",bh, "[名称] = '" & Values(Index) & "'")
gg = DataTables("药品信息表").GetComboListString("规格","[名称] = '" & Values(Index) & "'","_Identify")
Dim Value2s() As String
Value2s = gg.split("|")
For i As Integer = 0 To Value2s.Length - 1
DataTables("药品信息表").ReplaceFor("规格序号",i+1,"[名称] = '" & Values(Index) & "' and 规格 = '" & Value2s(i) & "'")
Next
Next