Foxtable(狐表)用户栏目专家坐堂 → [求助]行号读取的求助-已解决,底层放出完整代码


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

主题:[求助]行号读取的求助-已解决,底层放出完整代码

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
[求助]行号读取的求助-已解决,底层放出完整代码  发帖心情 Post By:2021/9/18 13:50:00 [只看该作者]

在窗口中的SQLQuery表,新增一行后,将当前的行号填入到“生产计划编号”列中,我目前是如下做的,但不行,得到的结果永远是 1
DataRowAdded
Dim r As Row = CurrentTable.Current
e.DataRow("生产计划编号") = r.Index + 1

另外,如果我删除了任意一行,如果不是最后一行,希望下方记录的“生产计划编号”列列自动更新

请老师看看,谢谢!
[此贴子已经被作者于2021/9/18 14:53:19编辑过]

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/18 14:13:00 [只看该作者]

首先table的行号和数据库是没有任何关系的,不管是筛选,排序后第一行行号永远是1,没有什么业务意义。

其次不建议使用这个东西,假设有10W行数据,把第一行删除后,难道还得把后面的99999行数据改一下行号,扯淡吧

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2021/9/18 14:23:00 [只看该作者]

我的意思是,新增2行或3行后,第2行或第3行还是显示1,如何能显示2或3,另外,这张表是某个计划的工序表,加载记录时会有限定,记录不会很多,不会超过100行,所以不存在执行效率问题

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


加好友 发短信
等级:超级版主 帖子:110333 积分:561507 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/9/18 14:31:00 [只看该作者]

e.DataRow("生产计划编号") = e.datatable.datarows.count + 1

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


加好友 发短信
等级:五尾狐 帖子:1104 积分:8956 威望:0 精华:0 注册:2014/10/25 11:24:00
  发帖心情 Post By:2021/9/18 14:46:00 [只看该作者]

解决问题了,给各位参考下,使用此代码要求加载的数据不能太多,因为用了遍历
DataRowAdded事件:以下代码解决新增行与插入行后,编号自动更新的问题
Dim tb As WinForm.Table = e.Form.Controls("生产计划辅表")
Dim t As Table = tb.Table
If t.Rows.Count > 0 Then
    For Each r As Row In t.Rows
        r("生产计划编号") = r.Index + 1
    Next
End If

DataRowDeleted事件:
Dim tb As WinForm.Table = e.Form.Controls("生产计划辅表")
Dim t As Table = tb.Table
If t.Rows.Count > 0 Then
    For Each r As Row In t.Rows
        r("生产计划编号") = r.Index + 1
    Next
End If

AfterMoveRow事件:上下移动行后更新行号
If e.Table.Rows.Count > 0 Then
e.Table.Rows(e.oldindex)("生产计划编号") = e.Table.Rows(e.oldindex).index+1
e.Table.Rows(e.newindex)("生产计划编号") = e.Table.Rows(e.newindex).index+1
End If

KeyDown事件:按 CTRL加 上下方向键实现  行的上下移动
If e.Control = True AndAlso e.Table.Current IsNot Nothing Then
    Select Case e.KeyCode
        Case Keys.Up
            Syscmd.Row.MoveUp()
        Case Keys.Down
            Syscmd.Row.MoveDown()
    End Select
End If

 回到顶部