var i,j,n:integer; begin n:=10; for j:=65 to 90 do memo1.Lines.add(( IntToStr((YearOf(date)) mod 100))+IntToStr(MonthOf(date))+char(j) ); for i:=1 to n do for j:=65 to 90 do memo1.Lines.add(( IntToStr((YearOf(date)) mod 100))+IntToStr(MonthOf(date))+char(j)+IntToStr(i) ); end;我来练练
这个前面取日期,后面记录序号,比如序号是 monid,流水号就是xid int xxx; string xid:=FormatDateTime("yymm",Now()); xid:=xid+Chr(monid mod 26+65); xxx=monid div 26; if(xxx>0) xid:=xid+inttostr(xxx);
给你一个是从数据库取流水号计算的,到了Z9就结束,就是说一个月最多260个 我测试过的,试试符合要求吗,也可以再扩展一下 建表:t(t varchar(20)) function TForm1.GetID():string; var s,s1,s2:string; begin s:=FormatDateTime('YYMM',Date+30); with adoquery1 do begin close; sql.text:='Select Top 1 t From t Where t like ''%'+s+'%'' Order By Len(t) Desc, right(t,1) desc,right(t,2) desc'; open; if isempty then result:=s+'A' else begin s1:=adoquery1.fieldbyname('t').asstring; if s1=s+'Z9' then result:='超出了' else begin s2:=copy(s1,5,1); if s2<>'Z' then result:=s+Chr(Ord(s2[1])+1)+ copy(s1,6,1) else case Length(s1) of 5:result:=s+'A1'; 6:result:=s+'A'+IntToStr(StrToInt(copy(s1,6,1))+1); end; end; end; end; end;
var
i,j,n:integer;
begin
n:=10;
for j:=65 to 90 do
memo1.Lines.add(( IntToStr((YearOf(date)) mod 100))+IntToStr(MonthOf(date))+char(j) );
for i:=1 to n do
for j:=65 to 90 do
memo1.Lines.add(( IntToStr((YearOf(date)) mod 100))+IntToStr(MonthOf(date))+char(j)+IntToStr(i) );
end;我来练练
int xxx;
string xid:=FormatDateTime("yymm",Now());
xid:=xid+Chr(monid mod 26+65);
xxx=monid div 26;
if(xxx>0)
xid:=xid+inttostr(xxx);
我测试过的,试试符合要求吗,也可以再扩展一下
建表:t(t varchar(20))
function TForm1.GetID():string;
var
s,s1,s2:string;
begin
s:=FormatDateTime('YYMM',Date+30);
with adoquery1 do
begin
close;
sql.text:='Select Top 1 t From t Where t like ''%'+s+'%'' Order By Len(t) Desc, right(t,1) desc,right(t,2) desc';
open;
if isempty then
result:=s+'A'
else
begin
s1:=adoquery1.fieldbyname('t').asstring;
if s1=s+'Z9' then
result:='超出了'
else
begin
s2:=copy(s1,5,1);
if s2<>'Z' then
result:=s+Chr(Ord(s2[1])+1)+ copy(s1,6,1)
else
case Length(s1) of
5:result:=s+'A1';
6:result:=s+'A'+IntToStr(StrToInt(copy(s1,6,1))+1);
end;
end;
end;
end;
end;