Foxtable(狐表)用户栏目专家坐堂 → 求助:插入行后自动重新编号


  共有3581人关注过本帖树形打印复制链接

主题:求助:插入行后自动重新编号

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


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
求助:插入行后自动重新编号  发帖心情 Post By:2019/7/21 15:43:00 [只看该作者]

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

照片如下:

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

例子如下:

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

 

 

 

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


 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4773 积分:34673 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By: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
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2019/7/22 10:43:00 [只看该作者]

谢谢指点!

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

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


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

 

  谢谢老师!


 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/22 11:06:00 [只看该作者]

从插入的行开始往下遍历所有行+1

 回到顶部
帅哥哟,离线,有人找我吗?
cxmxjwlmq
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:111414 积分:567140 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By: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
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:349 积分:4166 威望:0 精华:0 注册:2018/4/6 18:02:00
  发帖心情 Post By:2019/7/22 22:55:00 [只看该作者]

谢谢老师指点!


 回到顶部