otomatik kod artırma
Forum kuralları
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
Bu forum sadece yapacağınız işle alakalı doğru bileşeni bulmak içindir. Şöyle bir şey yapmam lazım, hangi bileşeni kullanıyım diyorsanız, doğru yerdesiniz.
otomatik kod artırma
Merhaba arkadaşlar cari kartında cari kodu kısmına C0001 diye başlayıp sonra her yeni kart eklemek istediğimde C0002 diye 1 artırmak istiyorum.
Carikodu alanım string bir alan ve dataset kullandım. Nasıl yapıcağım hakkında yardımcı olursanız çok sevinirim.
Carikodu alanım string bir alan ve dataset kullandım. Nasıl yapıcağım hakkında yardımcı olursanız çok sevinirim.
Re: otomatik kod artırma
trigger kullanabilirsiniz. Kodu ve sayısal kısmını ayrı ayrı alanlarda tutmanız daha iyi olabilir.
Re: otomatik kod artırma
Kod: Tümünü seç
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;
Fonksiyona verilen stringi bir artırarak geri döndürüyor.
Re: otomatik kod artırma
Merhaba arkadaşlar öncelikle cevaplarınız için teşekkürler sınavım vardı cevap yazamadım ama husonet in yazdığı kodu denedim ama sürekli 1 geri atıyor ben atıyorum kod C0001 ise C0002,C0003,... vb. diye her yeni kayıt eklemek istediğimde +1 devam etsin istiyorum.
-
- Üye
- Mesajlar: 121
- Kayıt: 10 Ara 2015 10:39
Re: otomatik kod artırma
Merhaba.
Normalde bu işlemi yapmak için kullanmanız gereken yöntem, veri tabanınızda Generator tanımlayıp otomatik olarak artmasını sağlamaktır. Kullandığınız veri tabanını bilmediğim için bir şey diyemeyeceğim. Manuel olarak kod üretmek istiyorsanız ufak bir örnek ekliyorum. Umarım işinizi görür.
Kolay gelsin.
http://s7.dosya.tc/server11/af6v7w/numarator.zip.html
Normalde bu işlemi yapmak için kullanmanız gereken yöntem, veri tabanınızda Generator tanımlayıp otomatik olarak artmasını sağlamaktır. Kullandığınız veri tabanını bilmediğim için bir şey diyemeyeceğim. Manuel olarak kod üretmek istiyorsanız ufak bir örnek ekliyorum. Umarım işinizi görür.
Kolay gelsin.
http://s7.dosya.tc/server11/af6v7w/numarator.zip.html
Re: otomatik kod artırma
merhaba ihalilcoban kod için teşekkür ederim ama dediğiniz gibi manuel değilde veri tabanından artırmam gerekiyor SQL veri tabanı kullanıyorum biraz uğraştım id üzerinden açıla her sayfa için eklesin diye ama pek başarılı olamadım elinizde hazır kod varsa ya da yardımcı olursanız sevinirim
-
- Üye
- Mesajlar: 121
- Kayıt: 10 Ara 2015 10:39
Re: otomatik kod artırma
Merhaba.
SQL de AutoIncrement, PrimariKey, Identity konularına bakmanız gerekiyor. Mantığını çözerseniz zaten gerisi gelecektir.
Örnek olarak;
https://www.youtube.com/watch?v=h2wBnPN7FuA
Buraya bakabilirsiniz.
SQL de AutoIncrement, PrimariKey, Identity konularına bakmanız gerekiyor. Mantığını çözerseniz zaten gerisi gelecektir.
Örnek olarak;
https://www.youtube.com/watch?v=h2wBnPN7FuA
Buraya bakabilirsiniz.
-
- Üye
- Mesajlar: 330
- Kayıt: 09 Mar 2004 11:18
- Konum: Konya
- İletişim:
Re: otomatik kod artırma
Ben bu işlem için veritabanında Ayarlar Tablosu [ TABLOADI (String) / KOD (String) / KAYITNO ( integer ) ] ile çözüyorum.
Kullanıcı istediği kısa kodu belirleyebiliyor -> [ C ]
POST işleminden önce de kodun kaç hane olmasını istiyorsan KOD ve KAYITNO değerinin arasına o kadar sıfır ekleyip işi bitirebilirsiniz...
Kullanıcı istediği kısa kodu belirleyebiliyor -> [ C ]
POST işleminden önce de kodun kaç hane olmasını istiyorsan KOD ve KAYITNO değerinin arasına o kadar sıfır ekleyip işi bitirebilirsiniz...
Kod: Tümünü seç
function KodOlustur( AKod : string; ASonKayitNo : integer ) : string;
var
sKod,
sTmp : string;
const
cHaneSayisi = 5;
begin
sKod := '';
sTmp := '';
while ( Length( sTmp ) ) < ( cHaneSayisi - Length( IntToStr( ASonKayitNo ) ) ) do
sTmp := sTmp + '0';
sKod := AKod + sTmp + IntToStr( ASonKayitNo ) ;
Result := sKod;
end;
Re: otomatik kod artırma
Kardeş bi yanlışlık yapmışsın belliki. kodu ben kullanıyorum hem de birçok programım da, düzgün çalışıyor.
Üstelik son hane rakam olursa rakam olarak artırıyor, harf olursa alfabetik sırayla artırıyor.
Re: otomatik kod artırma
Firebird kullandiginizi varsayiyorum.bir storedprocedure tanimlarsiniz. Beforeinsert triggerinde call yaparsiniz.
Storedprocedure icinde, en son eklenmis olan C-Numarasini get eder, akabinde parse eder, integer deger elde edip Increment yapar, daha sonra elde ettiginiz bir üst rakami ayirdiginiz Char ile birlestirip createdNum seklinde suspend ettirirsiniz. Dönen deger tabloya insert edilir.
Storedprocedure icinde, en son eklenmis olan C-Numarasini get eder, akabinde parse eder, integer deger elde edip Increment yapar, daha sonra elde ettiginiz bir üst rakami ayirdiginiz Char ile birlestirip createdNum seklinde suspend ettirirsiniz. Dönen deger tabloya insert edilir.
kıdemsiz üye
Re: otomatik kod artırma
Hocam plaza ağzı gibi olmuş, helal olsun...ikra yazdı: ↑21 Ara 2018 11:18 Firebird kullandiginizi varsayiyorum.bir storedprocedure tanimlarsiniz. Beforeinsert triggerinde call yaparsiniz.
Storedprocedure icinde, en son eklenmis olan C-Numarasini get eder, akabinde parse eder, integer deger elde edip Increment yapar, daha sonra elde ettiginiz bir üst rakami ayirdiginiz Char ile birlestirip createdNum seklinde suspend ettirirsiniz. Dönen deger tabloya insert edilir.
Re: otomatik kod artırma
KoPilot yazdı: ↑08 Ara 2018 11:56sanırım Husonet'in yazdığı bir fonksiyon. Linkini bulamadım direkt kodları veriyorum.Kod: Tümünü seç
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;
Fonksiyona verilen stringi bir artırarak geri döndürüyor.
Doģrudur yanlışlık yapmış olabilirim cok tecrubem yok fonksiyonu cari kartındaki text alana nasıl çağırıcağımı yazabilirmisiniz
Formun onshow kismina bu sekilde yapmistim calismadi
dbedit1.text:=numarator(dbedit1.text);
Re: otomatik kod artırma
Tesekkür ederim )KoPilot yazdı: ↑23 Ara 2018 09:13Hocam plaza ağzı gibi olmuş, helal olsun...ikra yazdı: ↑21 Ara 2018 11:18 Firebird kullandiginizi varsayiyorum.bir storedprocedure tanimlarsiniz. Beforeinsert triggerinde call yaparsiniz.
Storedprocedure icinde, en son eklenmis olan C-Numarasini get eder, akabinde parse eder, integer deger elde edip Increment yapar, daha sonra elde ettiginiz bir üst rakami ayirdiginiz Char ile birlestirip createdNum seklinde suspend ettirirsiniz. Dönen deger tabloya insert edilir.
kıdemsiz üye
-
- Üye
- Mesajlar: 121
- Kayıt: 10 Ara 2015 10:39
Re: otomatik kod artırma
Öncelikle en son verilen cari kodu bulmanız gerekir. Artan şekilde gideceği için SQL MAX kullanarak cari kodu veri tabanından çekip, dbedit1.text:=numarator(TABLOCARI_KOD.VALUE); şeklinde kullanabilirsiniz.comeng07 yazdı: ↑25 Ara 2018 08:17KoPilot yazdı: ↑08 Ara 2018 11:56sanırım Husonet'in yazdığı bir fonksiyon. Linkini bulamadım direkt kodları veriyorum.Kod: Tümünü seç
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;
Fonksiyona verilen stringi bir artırarak geri döndürüyor.
Doģrudur yanlışlık yapmış olabilirim cok tecrubem yok fonksiyonu cari kartındaki text alana nasıl çağırıcağımı yazabilirmisiniz
Formun onshow kismina bu sekilde yapmistim calismadi
dbedit1.text:=numarator(dbedit1.text);
Re: otomatik kod artırma
Teşekkür ederim kardeşimihalilcoban yazdı: ↑26 Ara 2018 07:16Öncelikle en son verilen cari kodu bulmanız gerekir. Artan şekilde gideceği için SQL MAX kullanarak cari kodu veri tabanından çekip, dbedit1.text:=numarator(TABLOCARI_KOD.VALUE); şeklinde kullanabilirsiniz.comeng07 yazdı: ↑25 Ara 2018 08:17KoPilot yazdı: ↑08 Ara 2018 11:56sanırım Husonet'in yazdığı bir fonksiyon. Linkini bulamadım direkt kodları veriyorum.Kod: Tümünü seç
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;
Fonksiyona verilen stringi bir artırarak geri döndürüyor.
Doģrudur yanlışlık yapmış olabilirim cok tecrubem yok fonksiyonu cari kartındaki text alana nasıl çağırıcağımı yazabilirmisiniz
Formun onshow kismina bu sekilde yapmistim calismadi
dbedit1.text:=numarator(dbedit1.text);