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


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

主题:自动编号问题

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
自动编号问题  发帖心情 Post By:2018/11/9 20:54:00 [只看该作者]

以下代码红色部分显示有错,请问老师该怎么修改

Select e.DataCol.Name
    Case "施工合同段","计量期次"
        If e.DataRow.IsNull("施工合同段") OrElse e.DataRow.IsNull("计量期次")Then
            e.DataRow("计量编号") = Nothing
        Else
            Dim bd As String = e.DataRow("施工合同段")
            Dim qc As String = e.DataRow("计量期次")
            Dim bh As String = e.DataRow("施工合同段") & "-" & e.DataRow("计量期次") & "-" '生成编号的前缀
            If e.DataRow("计量编号").StartsWith(bh) = False '如果单据编号前缀不符
                Dim max As String
                Dim idx As Integer
                Dim flt As String
                flt = "施工合同段 = '"& e.DataRow("施工合同段") & "' And 计量期次 = '"& e.DataRow("计量期次") " & bd & e.DataRow("_Identify")
                max = e.DataTable.Compute("Max(计量编号)",flt) '取得
                If max > "" Then '如果存在最大编号
                    idx = CInt(max.Substring(6,3)) + 1 '获得最大编号的后三位顺序号,并加1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("计量编号") = bh & Format(idx,"000")
            End If
        End If
End Select

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/11/9 20:55:00 [只看该作者]

想生成这样的编号:No.2-01-001,分别对应:施工合同段-计量期次-编号

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


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

flt = "施工合同段 = '" & e.DataRow("施工合同段") & "' And 计量期次 = '" & e.DataRow("计量期次") "' and _Identify <> " & e.DataRow("_Identify")

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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/11/10 17:56:00 [只看该作者]

老师,还是显示以下错误

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


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/11 9:50:00 [只看该作者]

改成

 

flt = "施工合同段 = '" & e.DataRow("施工合同段") & "' And 计量期次 = '" & e.DataRow("计量期次") & "' and _Identify <> " & e.DataRow("_Identify")


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/11/11 10:34:00 [只看该作者]

甜老师,根据你的意见修改代码可以生成编号,但是新增行的时候,生成的编号也是001,没有按顺序生成002,我是每新增一行才在计量期次列录入计量期次的

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/11 11:26:00 [只看该作者]

idx = CInt(max.Substring(6,3)) + 1 '获得最大编号的后三位顺序号,并加1

 

改成

 

idx = CInt(max.Substring(bh.length, 3)) + 1 '获得最大编号的后三位顺序号,并加1


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


加好友 发短信
等级:三尾狐 帖子:689 积分:5155 威望:0 精华:0 注册:2017/10/22 10:15:00
  发帖心情 Post By:2018/11/11 11:39:00 [只看该作者]

可以实现了,多谢甜老师。但是还有一个问题,比如我已经增加了4行,自动编号为001~004,如果我把002行删除,怎么实现:003行自动更改编号为002,004则自动更改编号为003.这样的功能能实现吗?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/11 11:45:00 [只看该作者]

1、生成的编号不建议修改。因为别的地方有可能引用到这个编号,如果你改了,引用的地方(加入有多个表都引用此编号)那就都要修改。

 

2、现在的系统,一般不处理断号。


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/11/11 11:46:00 [只看该作者]


 回到顶部