流水号自动编号 ( 积分: 100 )

  • 主题发起人 主题发起人 holy-tom
  • 开始时间 开始时间
H

holy-tom

Unregistered / Unconfirmed
GUEST, unregistred user!
请教各位大虾一个问题:如何用delphi编程实现流水号的自动编号。
例如:一张发票的流水号为00000235,在填写完这张发票后,系统自动根据这张发票的流水号,计算出下一张发票的流水号00000236。
用什么方法计算起来最简单。
 
select max(流水号) from 表
将流水号转换类型后加1处理,再重新构造成你的编码格式,不过需要考虑到多用户同时操作,在保存的时候需要重新获得流水号后保存到数据库

如果是sql数据库可以创建一个触发器自动生成流水号
 
在数据库中建一个编号库,让他记录编号.这样用于多用户操作.
 
用储存过程..最简单..
支持多用户操作...不会出现重复问题..
 
只说计算方法:
select max(流水号) ,再加1
设max = '00000235',求next
procedure TForm1.Button2Click(Sender: TObject);
var
aString: String;
i: integer;
temp,res: string;
begin
aString:= '00000235';
temp:= IntToStr(StrToInt(aString)+1);
for i:=1 to (length(aString)-length(temp)) do
res:= '0'+res;
res:= res+ temp;
Memo1.Lines.Add(res);
end;
 
好..又学到新的方法.哈哈.
好开心..
 
流水號長度固定,然後查出最大的,加上1就可以作爲新的流水號了
 
建议你用1000000这样的方式。lisongmagic写的很好!
如果你是网络版,将每台机器编号,如机器A是:10000000,B是20000000,然后生成的流水号,在这个的基础上加1就很好了
 
真无聊。。。
 
可能是我道行太浅看不懂
 
aString:= '00000235';
temp:= IntToStr(StrToInt(aString)+1);
result := rightstr('00000000'+temp,8);
 
这个问题建议你在数据库里建立适合业务需要的融发器,同时也解决多用户并发问题。
 
后退
顶部