以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助]求老师帮忙,自动编号的问题! (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=31105) |
-- 作者:sadfox -- 发布时间:2013/4/10 11:54:00 -- [求助]求老师帮忙,自动编号的问题! Select e.DataCol.Name 我想让自动编号都是从XX01到XX31,就是当XX01-XX31满了后,再次输入XX,则又从XX01开始到XX31结束,一直接这样循环编号,请问大神代码该怎么样改?
|
-- 作者:Bin -- 发布时间:2013/4/10 11:57:00 -- 前面XX不变? XX01-XX31 无限循环? 这个有难度. 得好好想想.. |
-- 作者:sadfox -- 发布时间:2013/4/10 12:02:00 -- 以下是引用Bin在2013-4-10 11:57:00的发言:
前面XX不变? XX01-XX31 无限循环? 这个有难度. 得好好想想.. 对,就是这样,在类别列输入XX,当编号XX01-XX31满了后,继续输入XX,编号又从XX01开始编到XX31结束,就这样循环! |
-- 作者:不倒的翁 -- 发布时间:2013/4/10 12:05:00 -- 建议使用SaveConfigValue函数和GetConfigValue函数 记忆主键列的值,每到达一个循环后将最大的XX31的主键值写入,然后进行重新编排。 或者在函数中保存一个周期变量。 或者直接在调用函数中的编号范围,如果达到最大,就重置,编号代码根据GetConfigValue来定义。 以上只是思路提醒,高手勿喷啊。 |
-- 作者:blackzhu -- 发布时间:2013/4/10 12:11:00 -- 试试这边 idx = CInt(max.Substring(2,2)) + 1 if idx = 31 Then idx = 1 \'否则顺序号等于1 End if Else idx = 1 \'否则顺序号等于1 End If |
-- 作者:Bin -- 发布时间:2013/4/10 12:12:00 -- 为什么有这种需求 换个方案会不会好点? 非要这样的话.可以试试这个非常没效率的办法 声明2个变量,分别为: 上一编号数量, 下一编号数量 上1编号数量为 编号为01的行数 循环所有查找编号从02开始到31. 查找编号为02的行数如果比01少 那么IDX就等于这个行数+1 否则 上一编号数量赋值为 编号为02的行数 继续循环
|
-- 作者:Bin -- 发布时间:2013/4/10 12:13:00 -- 以下是引用blackzhu在2013-4-10 12:11:00的发言:
你这个只要有了一次31 永远都是1了.
试试这边 idx = CInt(max.Substring(2,2)) + 1 if idx = 31 Then idx = 1 \'否则顺序号等于1 End if Else idx = 1 \'否则顺序号等于1 End If |
-- 作者:Bin -- 发布时间:2013/4/10 12:14:00 -- 以下是引用不倒的翁在2013-4-10 12:05:00的发言:
这个思路可行.如果多用户就完蛋了.
建议使用SaveConfigValue函数和GetConfigValue函数 记忆主键列的值,每到达一个循环后将最大的XX31的主键值写入,然后进行重新编排。 或者在函数中保存一个周期变量。 或者直接在调用函数中的编号范围,如果达到最大,就重置,编号代码根据GetConfigValue来定义。 以上只是思路提醒,高手勿喷啊。 |
-- 作者:不倒的翁 -- 发布时间:2013/4/10 12:16:00 -- 以下是引用Bin在2013-4-10 12:14:00的发言:
这个思路可行.如果多用户就完蛋了. 多用户独占编辑。 |
-- 作者:sadfox -- 发布时间:2013/4/10 12:16:00 -- 以下是引用Bin在2013-4-10 12:12:00的发言:
为什么有这种需求 换个方案会不会好点? 非要这样的话.可以试试这个非常没效率的办法
声明2个变量,分别为: 上一编号数量, 下一编号数量
上1编号数量为 编号为01的行数
循环所有查找编号从02开始到31.
查找编号为02的行数如果比01少 那么IDX就等于这个行数+1
否则 上一编号数量赋值为 编号为02的行数 继续循环 老白啊,不懂,除了编号,那么有什么其他方法可以实现? |