以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  求助:插入行后自动重新编号  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=138032)

--  作者:cxmxjwlmq
--  发布时间:2019/7/21 15:43:00
--  求助:插入行后自动重新编号

各位老师:我做了一个窗口,在窗口中有一个插入行按钮,代码为在当前行下插入一行,并给新插入行赋值。有一个文本框,我想要的效果是:在文本框中输入值后,譬如6,那么原来的第二列的6变成7,7变成8。。。借鉴了流水帐的例子,在表A中增加了代码,但总是自动退出!

照片如下:

图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190721153828.png
图片点击可在新窗口打开查看

例子如下:

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.zip

 

 

 

请老师大咖们费心指点指点!


--  作者:y2287958
--  发布时间:2019/7/21 16:03:00
--  
Dim i As Integer = val(e.Form.Controls("TextBox1").Text)
Syscmd.Row.Insert()
Dim r As Row = CurrentTable.Current
r.Move(r.Index+1)
r("第二列") = i+1

--  作者:cxmxjwlmq
--  发布时间:2019/7/22 10:43:00
--  

谢谢指点!

   但按照二楼的代码输入后,第二行是变了,但当前行下的所有有序号的行没有自动加上1!

   如下图:我在第7行下插入了一行(红色的一行是我新插入的),当前行的第二列变成了8,但当前行的所有以下行有数值的:如原来的8、9、10没有自动加上1,变成9、10、11等。
图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190607103504.png
图片点击可在新窗口打开查看
  我想要的效果是:当插入新行后,插入行下的所有第二列有数值的行,均加上1,没有数值的行不加,如下图:


图片点击可在新窗口打开查看此主题相关图片如下:微信图片_20190607104336.png
图片点击可在新窗口打开查看

 

  谢谢老师!


--  作者:有点蓝
--  发布时间:2019/7/22 11:06:00
--  
从插入的行开始往下遍历所有行+1
--  作者:cxmxjwlmq
--  发布时间:2019/7/22 16:15:00
--  

蓝老师:我折腾了半天,还是不行,对遍历没有学懂,不好意思!

     Dim i As Integer = val(e.Form.Controls("TextBox1").Text)
Syscmd.Row.Insert()
Dim r As Row = CurrentTable.Current
r.Move(r.Index+1)
r("第二列") = i+1
With CurrentTable
    Dim dr As Integer = .FindRow("[第二列] > 0 ", .Position + 1, True ) \'从当前行的下一行开始查找
    If dr >= 0 Then \'如果找到的话
       .Position = dr \'定位到找到的行.
    End If
End With

请老师指点一下吧!

[此贴子已经被作者于2019/7/22 16:19:06编辑过]

--  作者:有点蓝
--  发布时间:2019/7/22 16:31:00
--  
Dim t As Table = Tables("表A")
Dim nr As Row = t.InsertNew
Dim idx As Integer = 1
If nr.Index > 0 Then
    idx  = val(t.Rows(nr.Index -1)("第二列"))+1
End If
nr("第二列") = idx
nr("第四列") =  Date.Today
nr("第三列") = 1
idx += 1
For i As Integer = nr.Index+1 To t.Rows.Count - 1
    t.Rows(i)("第二列") = idx
    idx +=1
Next

--  作者:cxmxjwlmq
--  发布时间:2019/7/22 17:44:00
--  

谢谢蓝老师!

   我们都难死了,对于老师是小KS!

 

Dim t As Table = Tables("表A")  ‘定义表

Dim nr As Row = t.InsertNew  ‘定义新插入行

Dim idx As Integer = 1   ‘设定初始变量

If nr.Index > 0 Then  ‘返回插入行的列的位置

    idx  = val(t.Rows(nr.Index -1)("第二列"))+1  ‘从插入行的下一行开始遍历

End If

nr("第二列") = idx ‘给插入行的第二列赋值

nr("第四列") =  Date.Today ‘给插入行的第四列赋值

nr("第三列") = 1 ‘给插入行的第三列赋值

idx += 1 ‘给循环变更赋值

For i As Integer = nr.Index+1 To t.Rows.Count – 1  ‘从插入行的下一行开始遍历

    t.Rows(i)("第二列") = idx 

    idx +=1   ‘给第二列赋于新值

Next

 

老师,我理解的对不对?

这个代码达到了第二列增加一的效果,但这个代码是在当前行上插入一行,

  我想要的效果是:在当前行的下一行插入一行,不知道怎么改代码,请老师费心!

[此贴子已经被作者于2019/7/22 18:15:25编辑过]

--  作者:有点蓝
--  发布时间:2019/7/22 20:21:00
--  
Dim t As Table = Tables("表A")  \'定义表
Dim nr As Row
If t.Position= t.Rows.Count-1
    nr = t.AddNew
Else
    t.Position = t.Position+1
    nr = t.InsertNew  \'定义新插入行
End If

--  作者:cxmxjwlmq
--  发布时间:2019/7/22 22:55:00
--  

谢谢老师指点!