自动编号问题

chenminghong 2004-08-11 04:27:36
如何自动生成自CA+年份+0001向上的自动编号呢
当年份增加一年时,编号从0001再开始
...全文
164 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenminghong 2004-08-12
  • 打赏
  • 举报
回复
这个代码,大家帮我看一下
我已经排序玩了,是降序
chenminghong 2004-08-12
  • 打赏
  • 举报
回复
大家帮忙看一下我写的代码
可是只实行一次,其他结果都一样
var
card,cardNo:string;
num,num1:integer;
year,mon,date:word;
clientdataset:Tclientdataset;
begin
decodedate(now,year,mon,date);
clientdataset:=Tclientdataset.Create(nil);
clientdataset.RemoteServer:=SocketConnection1;
clientdataset.ProviderName:='DataSetProvider1';
clientdataset.Active:=true;
if clientdataset.RecordCount>0 then
begin
card:=clientdataset.fieldbyname('p').AsString;
num:=strtoint(Copy(card,3,4));
if num<year then
begin
cardNo:='CA'+inttostr(year)+'0001';
end
else
begin
num1:=strtoint(copy(card,7,4));
inc(num1);
if num1<10 then
cardNo:='CA'+ inttostr(num) +'000' +inttostr(num1)
else
if Num1<100 then
cardNo:='CA'+ inttostr(num) +'00' +inttostr(num1)
else
if num1<1000 then
cardNo:='CA'+ inttostr(num) +'0' +inttostr(num1)
else
cardNo:='CA'+ inttostr(num) +inttostr(num1);
end;
end
else
cardno:='CA' + inttostr(year) + '0001';
cxtextedit1.Text:=cardno;
clientdataset.Free;
end;
chenminghong 2004-08-12
  • 打赏
  • 举报
回复
HowardLynn(Howard)
我是增加一个记录,增加一个编号,你写的代码我知道,一下子都实行玩
sankis 2004-08-11
  • 打赏
  • 举报
回复
最好是把年份和流水号话在一个表里。
改数据的时候先批判断当前的年份是否与表中的年份相同
如果相同流水号+1
如果不同流水变为00001
thunderniao 2004-08-11
  • 打赏
  • 举报
回复
STR:=CA+年份+**** //当前编号
IF STRTOINT(COPY(DATETOSTR(DATE),1,4))=STRTOINT(COPY(STR,3,4))+1
THEN
STR:=CA+COPY(DATETOSTR(DATE),1,4)+0001 //重新编号
HowardLynn 2004-08-11
  • 打赏
  • 举报
回复
var
sPrev: string;
sYear: string;
sSeri: string;
sNo: string;
I: Integer;
begin
sPrev := 'CA';
sYear := FormatDateTime('YYYY', Now);
for I := 1 to 9999 do
begin
sSeri := '0000' + IntToStr(I);
sSeri := Copy(sSeri, Length(sSeri) - 3, 4);
sNo := sPrev + sYear + sSeri;
end;
end;
chenminghong 2004-08-11
  • 打赏
  • 举报
回复
ding

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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