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


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

主题:关于自动编号的问题

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


加好友 发短信
等级:幼狐 帖子:54 积分:842 威望:0 精华:0 注册:2011/11/19 16:09:00
关于自动编号的问题  发帖心情 Post By:2012/6/7 11:20:00 [只看该作者]

各位狐友

我想让合同序号自动根据订单号进行编号,但是目前遇到如下问题

1)订单号一旦输入字母就报错

2)输入数字的话长度小于3的话也有问题

3)数字长度=3的时候,合同序号不自动往上编号

 

请问谁能帮忙解决一下

 

谢谢

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


 回到顶部
帅哥,在线噢!
狐狸爸爸
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/7 11:47:00 [只看该作者]

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


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


加好友 发短信
等级:幼狐 帖子:54 积分:842 威望:0 精华:0 注册:2011/11/19 16:09:00
  发帖心情 Post By:2012/6/7 11:54:00 [只看该作者]

谢谢狐爸!欧了

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


加好友 发短信
等级:幼狐 帖子:54 积分:842 威望:0 精华:0 注册:2011/11/19 16:09:00
  发帖心情 Post By:2012/6/7 14:19:00 [只看该作者]

狐爸,

经测试该代码有欠缺,如果一个订单号为2012-1话第二次输入会报错

idx = max.IndexOf("-") + 1 改成

idx = max.LastIndexOf("-") + 1就完美了


 回到顶部
帅哥,在线噢!
狐狸爸爸
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/7 15:34:00 [只看该作者]

呵呵,不错,你让我感到很宽慰。

 


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


加好友 发短信
等级:幼狐 帖子:54 积分:842 威望:0 精华:0 注册:2011/11/19 16:09:00
  发帖心情 Post By:2012/6/7 16:53:00 [只看该作者]

狐爸,又发现问题了

一旦订单号发生更改,编号不是根据之前已经生产的号顺序生成编号,

编号尾数可能会在原来的基础上+1

比如原订单号    编号

1111             1111-002

1112             1112-001

1112             1112-002

1112             1112-003

 

改动以后会成这样

订单号        编号 

1112             1112-003

1112             1112-001

1112             1112-002

1112             1112-003

 

请问这怎么解决,谢谢


 回到顶部
帅哥,在线噢!
狐狸爸爸
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2012/6/7 17:05:00 [只看该作者]

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 = max.IndexOf("-") + 1
                    idx = CInt(max.Substring(idx)) + 1
                Else
                    idx = 1 '否则顺序号等于1
                End If
                e.DataRow("合同序号") = lb & "-" & Format(idx,"000")
            End If
        End If
End Select

 回到顶部