大家帮忙看一下我写的代码 可是只实行一次,其他结果都一样 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;
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;
IF STRTOINT(COPY(DATETOSTR(DATE),1,4))=STRTOINT(COPY(STR,3,4))+1
THEN
STR:=CA+COPY(DATETOSTR(DATE),1,4)+0001 //重新编号
我是增加一个记录,增加一个编号,你写的代码我知道,一下子都实行玩
可是只实行一次,其他结果都一样
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;