Delphi 编写代码的时候需要自动生成流水号的编号

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:31:49
做的是毕业设计《停车场管理系统》,用户办停车卡:cardID的时候需要让这个卡号按流水号自动生成 如:C-0001 C-0002 C-0003 .....

//formname表名,No流水号字段名 ,ado自己设置一个TADOQuery控件
function GetAutoNo(formname,No:string):string;var
i,j:integer
tempNo:string
begin
ado.close;
ado.sql.text:='select * as t from '+formname+' order by '+No+';
ado.open;
if ado.isempty then
i:=1
else
begin
ado.last;
i:=StrToInt(copy(ado.fieldvalues[No]),2,4);{例:C-0001,copy将截取0001}
inc(i);//递增1
end;
tempNo:=IntToStr(i);
while Length(tempStr)<5 do
tempNo:='0'+tempNo;
result:='C-'+tempNo;
end;
这里只是思路,具体事实要考虑的如果流水号大于四位的情况,多加些判断也就可以了,这里不在细说了

自己写程序生成咯.

思路如下:
第一次插入,这时候库中没有值. 则插入C-0001

以后插入记录每次取cardid 最大值, select cardid from table order by cardid desc; 取第一个.

取出后将C- 截去,剩下的转整型+1,然后再和C- 拼一块就是新的cardid

如果编号是规范的,可以这样:
var ss:string;
........
qry1.sql.text:='select top 1 cardID from