20 Ocak 2019, 10:38:12

Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H


Otomatik kod artırma

Başlatan comeng07, 02 Ocak 2019, 23:21:28

comeng07

02 Ocak 2019, 23:21:28 Son düzenlenme: 06 Ocak 2019, 14:19:03 gevv
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

Kod Seç
function Numarator(no:string): string;

function 
TersCevir(nustring): string;
var
  
Cevrilenstring;
  
iinteger;
begin
  Cevrilen 
:= '';
  for 
:= Length(nudownto 1 do
  
begin
    Cevrilen
:= Cevrilen nu[i];
  
end;
  
Result := Cevrilen;
end;

var
NmrTemp :string;
iTmp integer;
begin
  Nmr 
:= TersCevir(no);
  
Tmp := 0;
  
:= 0;
  while 
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 
length(no) do
    
begin
      i 
:= ;
      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.