Arkadaşlar Merhaba;
Fatura No.larını otomatik arttırmak için algoritma arıyorum enbüyük rakam 10 ise fatura n.su 11 olarak yeni fatura kesildiği zaman artacak ben bunu yaptım fakat fatura numara olaylarında alfabeyide devreye sokmak istiyorum örneğin son kesilen fatura n.su S864721 ise bir daha fatura kesmek istersem S864722 olacak veya A999 ise birdahakine B000 olacak arkadaşlar bunu nasıl yapabirim fikir ve önerileriniz için şimdiden teşekkür ederim.
S864721 No
Forum kuralları
Forum kurallarını okuyup, uyunuz!
Forum kurallarını okuyup, uyunuz!
Merhaba,
ben baştaki seri no ile fatura no'yu iki ayrı alana kaydediyordum. Mesela A 998 nolu fatura olsun. A yı bir alana, 998'i de bir alana yazıyordum. Bir dahaki sefere kullanıcı fatura girerken, A'yı aynen alıp, fatura no yu bir artırarak getiriyordum. A 999.
Diyelim seri değişti ve B ile başlayan bir seri geldi. İlkinde kullanıcı bir sefere mahsus elle düzeltip B 001 yapıyordu. Ben diğer fatura da otomatikmen B 002 olarak getiriyordum.
Kolay gelsin.
ben baştaki seri no ile fatura no'yu iki ayrı alana kaydediyordum. Mesela A 998 nolu fatura olsun. A yı bir alana, 998'i de bir alana yazıyordum. Bir dahaki sefere kullanıcı fatura girerken, A'yı aynen alıp, fatura no yu bir artırarak getiriyordum. A 999.
Diyelim seri değişti ve B ile başlayan bir seri geldi. İlkinde kullanıcı bir sefere mahsus elle düzeltip B 001 yapıyordu. Ben diğer fatura da otomatikmen B 002 olarak getiriyordum.
Kolay gelsin.
Gercekten vermiş olduğun fikir güzel birde benim iki fikrim var. Tablomuzdaki alanı metin olarak tanımlayalım ve alanımıza girdiğimiz metinleri alfabetik ve numerik haneleri tek tek alıp ascii kodlarına cevirip bir arttırırsak ASCII kodu olarak sonuca ulaşabilirmiyim acaba ?
Veya şu şekil nasıl olur acaba soldan başlayan ilk rakamı bir arttırıp 9 dan sonra yanındaki rakamı 1 arttıran 'A000009' + 1 'A000010' + 1 buraya ufak bir sorgu
if a = 9 Then
begin
a := 0;
b := b + 1;
End;
gibi ve 'A000090' + 1 sonuc 'A000100' bunun gibi
harf hanesine geldiği zamanda örneğin 'A999999' + 1 sonuc olarak 'B00000' yapmak programı ağırlaştırırmı teknik olarak
hangi algoritma şekli daha mantıklı ve basit gelir acaba
Veya şu şekil nasıl olur acaba soldan başlayan ilk rakamı bir arttırıp 9 dan sonra yanındaki rakamı 1 arttıran 'A000009' + 1 'A000010' + 1 buraya ufak bir sorgu
if a = 9 Then
begin
a := 0;
b := b + 1;
End;
gibi ve 'A000090' + 1 sonuc 'A000100' bunun gibi
harf hanesine geldiği zamanda örneğin 'A999999' + 1 sonuc olarak 'B00000' yapmak programı ağırlaştırırmı teknik olarak
hangi algoritma şekli daha mantıklı ve basit gelir acaba
Merhaba,
hocam bana bolca problem çıkaracak birşeymiş gibi geldi. İlerde bu yöntem başına çok bela çıkarır.
Eğer ille tek alanda saklamak istiyorsan,
1. Copy ile 2. karakterden sona kadar kopyala
2. Bunu Integer'a çevir
3. Bir artır
4. Tekrar stringe çevirip, ilk karakter ile (A,B..) birleştir. Bu arada kontrol yapıp 9999 gibiyse harfide bir artırabilirsin. A ise B yaparsın.
Kolay gelsin.
hocam bana bolca problem çıkaracak birşeymiş gibi geldi. İlerde bu yöntem başına çok bela çıkarır.
Eğer ille tek alanda saklamak istiyorsan,
1. Copy ile 2. karakterden sona kadar kopyala
2. Bunu Integer'a çevir
3. Bir artır
4. Tekrar stringe çevirip, ilk karakter ile (A,B..) birleştir. Bu arada kontrol yapıp 9999 gibiyse harfide bir artırabilirsin. A ise B yaparsın.
Kolay gelsin.
BEnim Kullandığım Mustafanınkiyle aynı. 2 Alan var ilki fatura seri nosu yani 2 karakterlik string alan diğeri ise integer alan.
son numaraya gelince ise query ile yapıyorum.
where ile SeriNo yu filtreliyorum MAX(SiraNo)+1 ilede son numaranın bie fazlasını alıyorum
kolay gele
son numaraya gelince ise query ile yapıyorum.
where ile SeriNo yu filtreliyorum MAX(SiraNo)+1 ilede son numaranın bie fazlasını alıyorum
kolay gele
ZAGOR TENAY TÜRK'tür... TÜRK kalacak...
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!
Zoru başarırım, İmkansız zaman alır
FreeMan 35.5
Soru sormaya üşenmiyorsan, sorunun çözümünü yazmaya da üşenme !!!