下边是我要达到的效果,我自己编的效果不是很好,肯请大家的帮助
我自己编的当中最大的问题是无法判断1号,如果没有1号,只有从2号开始
那么即使插入1个号也是只能从3号开始插入,而且代码编的很繁复。
此主题相关图片如下:qq截图20141023180235.jpg

‘--------下面是我自己编的代码
Dim st As Date = Date.Now '将开始时间保存在变量st中
Dim dt As Date
Tables("packinglist").Sort = "ctno" '先进行排序
Dim n As Integer '= Tables("packinglist").Compute ("count(ctno)") '计算总行数
Dim js As WinForm.TextBox = e.Form.Controls("ct")
Dim ct As Integer = js.Value '把件数改为整数
Dim drd As Row = Tables("rukulist_table1").Current
Dim ttl As List(of String) = DataTables("packinglist").GetValues("ctno")
For Each t As String In ttl
n = n + 1
Next
Dim mxn As Integer = DataTables("packinglist").Compute("max(ctno)")
Dim min As Integer = DataTables("packinglist").Compute("min(ctno)")
If n = 0 Then '如果没有任何箱号,那么就从1号开始
For i As Integer = 1 To ct
Dim dr As DataRow = DataTables("Packinglist").AddNew
dr("ctno") = i
dr.Save
Next
MessageBox.Show("完成啦`(*∩_∩*)′! 共耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数
End If
If mxn - min + 1 = n Then '如果最大号 减去 最小号 加 1个 等于 总件数, 那么表示中间没有可以插入的号码了
100:
For i As Integer = 1 To ct
Dim dr As DataRow = DataTables("Packinglist").AddNew
dr("ctno") = mxn + i
dr.Save
Next
MessageBox.Show("完成啦`(*∩_∩*)′! 共耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数
Return
End If
If mxn - min + 1 <> n Then '如果最大号 减去 最小号 加 1个 不等于 总件数, 那么表示中间有可以插入的箱号
Dim mm As List(of String) = DataTables("packinglist").GetValues("ctno") '用这个就不能从1号开始,必须要有1号才可以从1号开始
For Each m As String In mm
Dim nn As Integer = CInt(m)
If nn < mxn Then '如果当前号码小于最大号
Dim nx As Integer = DataTables("packinglist").Compute("min(ctno)","ctno > '" & nn & "'") '找到比当前号码大的箱号
If nx - nn - 1 >= ct Then
For i As Integer = 1 To ct
Dim dr As DataRow = DataTables("Packinglist").AddNew
dr("ctno") = nn + i
dr.Save
Next
MessageBox.Show("完成啦`(*∩_∩*)′! 共耗时: " & (Date.Now - st).TotalSeconds & "秒") '计算并显示执行代码所花费的秒数
Return
End If
End If
If nn = mxn Then '如果当前号码等于最大号
goto 100
End If
Next
End If