用程序来给记录编号自动加1的问题

Accelerator 2005-11-29 08:03:08
表中有一字段名编号,字符串型。每次用户增加记录的时候,程序自动写入编号,并且允许用户自己更改编号。添加记录后,在另一个表中记录最新的编号,以便下一次添加记录时提出来自动加1。
例如当前添加的记录的编号是F55P0001,那么下一次添加的时候会自动在编号一栏填写F55P0002。
例如当前添加的记录的编号是1234XYA,那么下一次添加的时候会自动在编号一栏填写1234XYB。

不知道代码怎么写才能自动把编号加出来。

谢谢。
...全文
416 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
okmax 2006-01-18
  • 打赏
  • 举报
回复
收藏
lonaerd 2005-12-19
  • 打赏
  • 举报
回复
我刚做的一个库存管理,添加记录时自动将新编号显示。也是前面几位是字母代表类别。

但 xyz001 数字 的长度是固定的,不会有的是xyzz001,有的是xyz001.如果这样就很好处理啊!

select max(cast(right(f1,3) as int)) as a1 from tb

dim newid

newid=rs("a1")+1

xiangyx 2005-11-30
  • 打赏
  • 举报
回复
学习ing....
zalvsa 2005-11-30
  • 打赏
  • 举报
回复
循环读取字符串的每个字符,判断其ASI值
分三种情况:
>=48 and <=58(0-9)
>=97 and <=123(a-z)
>=65 and <=91(A-Z)
得到累加值后,再转成相应的字符串。
给你段PHP的,函数功能以及标志,ASP函数比较不熟悉,不好意思。
function F_stra1($m_sa){ //数值及字符串加一(1)
$m_sc=strlen("$m_sa");//获得字符串长度
$m_sdr=1;
$m_sb='';
while($m_sc>0){
$m_sac=ord(substr($m_sa,$m_sc-1,1))+$m_sdr;//ORD转成ASC值
switch($m_sac){
case($m_sac>=48 and $m_sac<=58)://0~9
$m_sdr=($m_sac==58)?1:0;
$m_sac=($m_sac==58)?48:$m_sac;
break;
case($m_sac>=97 and $m_sac<=123)://a~z
$m_sdr=($m_sac==123)?1:0;
$m_sac=($m_sac==123)?97:$m_sac;
break;
case($m_sac>=65 and $m_sac<=91)://A~Z
$m_sdr=($m_sac==91)?1:0;
$m_sac=($m_sac==91)?65:$m_sac;
break;
default:
$m_sdr=0;
break;
}
$m_sb=chr($m_sac).$m_sb;//ASC转成相应的字符
$m_sc-=1;
}
$m_salen=strlen($m_sa);//字符串长度
for($m_i=1;$m_i<=$m_salen;$m_i++){$m_charin.=' ';}
return substr($m_sb.$m_charin,0,$m_salen);
}
Accelerator 2005-11-29
  • 打赏
  • 举报
回复
我问题的原意是想问类似这样“xyz001”的字符串怎么加1,怎么分离这个串里面的数字和字符。
zhangshengjinggg 2005-11-29
  • 打赏
  • 举报
回复
那你专门加个表,表中只有一个字段,这个字段纪录当前已经使用的最大id
每次添加前从表中读出id,加1作为自动编号
商品新纪录添加到数据库中后,让这个字段+1,以备下次使用

但是,这有个问题,你要保证同时只有一个人在添加,否则可能导致编号重复

为了防止编号重复,还可以这样做:先添加一个新记录,除了编号不为空,其它都留空,把编号读出来,填入网页中,真正添加有意义的数据时,就是根据已经读出的编号修改这条对应的记录了。
也就是将insert变成insert+update
Accelerator 2005-11-29
  • 打赏
  • 举报
回复
谢谢虎兄。

一般来说编号由用户自己来定,比如不同类型的产品编号的前面几个字母不一样等等,程序不太好提供这种编号,所以用了个变通方法。
之所以加个自动的功能,是考虑到能给用户多少方便就提供多少方便的原因。
ailincn 2005-11-29
  • 打赏
  • 举报
回复
你的编号为什么要求改动呢?既然是要求程序自动增加的,就不存在人为的错误,那就不需要更改。
我的思路是这样的,你可以参考下:
1、每次追加记录前,先遍历数据库,看是不是空,如果是空,则给一个初始值。
2、如果不是空,则游标指向最后一条记录,读出来他的编号,用记录集增加的办法来添加一个新的记录,把这个编号按照自己的规律加一个。如:数字递增,如果是字母的话你要处理以下了哦,这个是你自己的事情了。
3、如果你单单是数字,可以采用数据库里面的自动编号字段,根本不要自己手工填写。

如果还有疑问,你留言给我

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧