Foxtable(狐表)用户栏目专家坐堂 → 序号自动增加问题


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

主题:序号自动增加问题

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


加好友 发短信
等级:一尾狐 帖子:495 积分:3918 威望:0 精华:0 注册:2019/1/13 10:12:00
序号自动增加问题  发帖心情 Post By:2021/11/16 9:04:00 [只看该作者]

老师,我在表的datarowadded事件中写了以下代码,实现了序号自动增加。还想优化实现如下功能:表是由多人录入的,如果是A录入,则序号为A001、A002...如果是B录入的,序号为B001、B002...等,以此类推。如何实现?
'------------------------------自动增加序号---------------------
e.DataRow("序号") = e.DataTable.sqlCompute("Max(序号)") + 1
e.DataRow.save
我的思路是:保留序号列,另加一列“序号2”,序号2按刚才的思路排序。请您指导。

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


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


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


加好友 发短信
等级:一尾狐 帖子:495 积分:3918 威望:0 精华:0 注册:2019/1/13 10:12:00
  发帖心情 Post By:2021/11/16 9:55:00 [只看该作者]

老师,我看了帮助,相当于按类别编号。实际情况是这样:表设置为启动不加载,打开窗口时没有内容,点击“新增”则增加一行,其中登录人自动填入作为类别;如果是王某人登录,则类别是王某人,编号是“王某人001”;我用开发者登录,实现了第一个编号“开发者001”;再点新增的时候提示以下错误。提示中的“者00”实际是“开发者001”中的字,不知道为什么只显示一部分。我把编号这一列已设置成字符,没法设置成整数。请您指导。
.NET Framework 版本:4.0.30319.18408
Foxtable 版本:2020.5.29.8
错误所在事件:表,决算登记表,DataColChanged
详细错误信息:
调用的目标发生了异常。
从字符串“者00”到类型“Integer”的转换无效。
输入字符串的格式不正确。


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


加好友 发短信
等级:超级版主 帖子:107852 积分:548617 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2021/11/16 10:07:00 [只看该作者]

贴出代码啊

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


加好友 发短信
等级:一尾狐 帖子:495 积分:3918 威望:0 精华:0 注册:2019/1/13 10:12:00
  发帖心情 Post By:2021/11/16 10:10:00 [只看该作者]

好了,老师,编号位数设置不对


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


加好友 发短信
等级:一尾狐 帖子:495 积分:3918 威望:0 精华:0 注册:2019/1/13 10:12:00
  发帖心情 Post By:2022/4/6 11:38:00 [只看该作者]

老师,在表的DataColChanged事件中以下代码实现了自动编号,但是只是在已显示的表的基础上增加序号,不能取后台的数据。我用的SQL阿里云数据库,请您指导。
'------------------------------------自动编号----------------------------
Select e.DataCol.Name
    Case "录单"
        If e.DataRow.IsNull("录单") Then
            e.DataRow("编号") = Nothing
        Else
            Dim lb As String = e.DataRow("录单")
            If e.DataRow("编号").StartsWith(lb) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                max = e.DataTable.Compute("Max(编号)","录单 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(3,4)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("编号") = lb & Format(idx,"0000")
            End If
        End If
End Select

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


加好友 发短信
等级:超级版主 帖子:107852 积分:548617 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2022/4/6 11:40:00 [只看该作者]

                Dim idx As Integer
                max = e.DataTable.sqlCompute("Max(编号)","录单 = '" & lb & "' And [_Identify] <> " & e.DataRow("_Identify")) '取得该类别的最大编号
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(3,4)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("编号") = lb & Format(idx,"0000")
e.DataRow.save
            End If
        End If

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


加好友 发短信
等级:一尾狐 帖子:495 积分:3918 威望:0 精华:0 注册:2019/1/13 10:12:00
  发帖心情 Post By:2022/4/6 13:20:00 [只看该作者]

老师,下面代码里的取数范围(3,4)有可能存在不确定性,因为我用的是姓名+编码的方式,如果姓名是两个字话会出现什么情况?
idx = CInt(max.Substring(3,4)) + 1 '获得最大编号的后三位顺序号,并加1

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


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

idx = CInt(max.Substring(max.length - 4)) + 1 

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


加好友 发短信
等级:一尾狐 帖子:495 积分:3918 威望:0 精华:0 注册:2019/1/13 10:12:00
  发帖心情 Post By:2022/4/6 13:42:00 [只看该作者]

谢谢老师!

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