merhaba arkadaşlar carikodunu otomatik olarak artırmak istiyorum.0001,0002 ve her yeni dediğimde 0003 gibi ilerlemesini istiyorum. sql veritabanı kullanıyorum carikodu alanım string yardımcı olursanız sevinirim. Bazı hazır kodlar var elimde ama
bir forumdan aldığım husonet adındaki arkadaşın kodu bu
function Numarator(no:string): string;
function TersCevir(nu: string): string;
var
Cevrilen: string;
i: integer;
begin
Cevrilen := '';
for i := Length(nu) downto 1 do
begin
Cevrilen:= Cevrilen + nu[i];
end;
Result := Cevrilen;
end;
var
Nmr, Temp :string;
i, Tmp : integer;
begin
Nmr := TersCevir(no);
Tmp := 0;
i := 0;
while i < length(no) do
begin
i:= i+1;
if Nmr[i]= '9' then
begin
Nmr[i] := '0';
continue;
end
else if (Nmr[i] < '9') and (Nmr[i] >= '0') then
begin
Temp := inttostr(Strtoint(Nmr[i])+1);
Tmp:= i;
Break;
end;
if Nmr[i]= 'Z' then
begin
Nmr[i]:= 'A';
continue;
end
else if (Nmr[i] < 'Z' ) or (Nmr[i] >= 'A') then
begin
Temp :=inttostr(ord(Nmr[i]));
Temp := inttoStr(Strtoint(Temp)+1);
Temp := Chr(Strtoint(Temp));
Tmp := i;
Break;
end;
end;
i:=0;
while i < length(no) do
begin
i := i + 1 ;
if Tmp = i then
if (Temp[1] <= '9') and (Temp[1] >= '0') then
Nmr[i] := Temp[1]
else
begin
Nmr[i] := Temp[1];
end;
Nmr[i] := Nmr[i];
end;
result := TersCevir(Nmr);
end;
Bu kodu çalıştıramadım bir türlü şu şekilde bir yol izledim
datasetin afterinsert kısmına
Dataset.last;
dbedit1.text := Numarator(Dataset.fieldbyname('CARİKODU').asstring);
ama bu şekilde datasetteki son kodu getirip cari kodunu bir artırıyor ve cari adı ve diğer alanlar bir önceki kayıt kalıyor değişiklik yapsamda artırdığı kayıt değil bir önceki cari koduna yazdırıyor.