Foxtable(狐表)用户栏目专家坐堂 → [求助]关于一个编程的问题,按条件插入号


  共有2354人关注过本帖平板打印复制链接

主题:[求助]关于一个编程的问题,按条件插入号

帅哥哟,离线,有人找我吗?
zenbu
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:166 积分:1946 威望:0 精华:0 注册:2012/12/26 15:47:00
[求助]关于一个编程的问题,按条件插入号  发帖心情 Post By:2014/10/23 18:09:00 [只看该作者]

下边是我要达到的效果,我自己编的效果不是很好,肯请大家的帮助

我自己编的当中最大的问题是无法判断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


 


 回到顶部
总数 11 1 2 下一页