A9152210 = A9152211 Gibi Fatura No Artırımı.
husonet15.03.2004 - 15:59:57
Uzun Zamandır yazayım diyordum. Bugüne kısmet oldu. Hayırlı olsun!!!


Function TersCevir(no:String):String;
var
Cevrilen:String;
i:Integer;
Begin
i:= 0;
Cevrilen := '';
For i := length(no) DownTo 1 Do
Begin
Cevrilen := Cevrilen + no[i];
End;
Result := Cevrilen;
End;

Function Numarator(no:String):String;
var
Nmr, Temp, Temp1:String;
Temp2:Char;
i, Tmp:Integer;
Begin
nmr := TersCevir(no);
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;

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(Numarator('DZ9999'));
end;


Kodun Amacı String olarak verilen veriyi 1 arttırmak. AZ99999Z, B99999
, B21222 vb....


Arkadaşlar açıklamasını yapmıyorum. Seminerlerde Örnek olarak açıklayacağım.

Kodu Testedip çalıştıran arkadaşlarımız olursa Fikirlerini yazarlarsa sevinirim.



İyi Çalışmalar.
Hüseyin ÖZDEMİR.
 
mege15.03.2004 - 18:18:49
kolay gelsin,bende türkçe karakterli fatura no isteyenler için küçük bi değişiklik yaptım 8) , müşteri ister valla, hazırlıklı olmak lazım,müşteri her zaman haklıdır :lol: :lol:

procedure TForm1.Button1Click(Sender: TObject);
Const Dizi:array[0..39] of string =
('0','1','2','3','4','5','6','7','8','9','A','B','C',
'Ç','D','E','F','G','Ğ','H','I','İ','J','K','L',
'M','N','O','Ö','P','R','S','Ş','T','U','Ü','V','Y','Z','0');

Function TersCevir(no:String):String;
var
Cevrilen:String;
i:Integer;
Begin
Cevrilen := '';
For i := length(no) DownTo 1 Do
Begin
Cevrilen := Cevrilen + no[i];
End;
Result := Cevrilen;
End;

Function FindChar(c:String):integer;
var
i:Integer;
Begin
Result:=-1;
For i := 0 To 38 Do
if Dizi[i] = c then begin
Result:= i;
Exit;
end;

End;

VAR iLoop1:integer;
sInputText,sResult:string;
elde:boolean;
begin
elde:=false;
sInputText:= TersCevir(UpperCase(edit1.Text));
sResult:='';

for iLoop1:= 1 to Length(sInputText) do
begin
if iLoop1 = 1 then Elde:= TRUE;

if Elde then
begin
sResult:= Dizi[FindChar(sInputText[iLoop1])+1] +sResult;
Elde:= (FindChar(sInputText[iLoop1])+1 > 38);
end
else
sResult:= sInputText[iLoop1]+sResult;

end;
if Elde then sResult:= '1'+sResult;


showmessage(Edit1.Text +' + 1 --> '+sResult);
end;
 
DotCom15.03.2004 - 23:13:33
Hüseyin abi kod için teşekkürler , ileride çok gerekli olacagına emin oldugum bir şey. hatta geçenlerde başka bir programda beni baya oyalamıştı. çok teşekkürler..
 
DotCom16.03.2004 - 00:04:40
to approve !!!

Kod çalışır durumda , herhangi bir problemi yok. function a gönderilen değer doğru olarak +1 durumunda geri dönüyor...

Kolay Gelsin.

@Husonet Teşekkürler...
 
husonet16.03.2004 - 00:27:21
Rica Ederim. Çok gerek duyuyordum yazmak içinde fırsatım hiç olmuyordu Dün Öylen fırsat bulunca yazmak nasip oldu.

Mege Arkadaşım Düzenlemeleriniz için teşekkür ederim. Yalnız kodun Fonksiyonel olmasına önem veriniz. Çünkü Projenin bir çok yerinde kullanmak gereği duyabilirsiniz.

İyi Geceler.
 
must_sargin27.09.2004 - 11:17:37
iyi çalışmalar,
husonet'e yazdığı kod için teşekkürler,
benim bir sorum olacak, acaba yazdığınız kodu tablonun afterinsert olayına yazdığımda bir sonraki katıda nasıl işletebilirim?
yardımcı olursanız sevinirim.
 
husonet27.09.2004 - 11:35:14
Tablodaki en yüksek numarayı bulup fonksiyona işletmen yeterli olacaktır. fonksiyondan dönen değeri tabloya yazman yeterli olur. Forum da bunun la ilgili arama yaparak örnek kodlar bulabilirsin. :wink:

Kolay Gelsin...
 
must_sargin28.09.2004 - 11:32:51
iyi çalışmalar,
husonet hocam sql'de max komutuyla en yüksek değeri çekiyorum ancak bir sonraki kayıda bu değeri nasıl yazdırabilirim acaba?
 
husonet28.09.2004 - 13:11:41
Çektiğin değeri fonksiyona parametre olarak geç fonksiyondan dönen değeri Filed'a ata.

NOT: Bu soruları Programlama kısmına sorunuz.

Kolay Gelsin...
 
NOT : Bu sayfa google'un siteyi indekslemesi içindir. www.delphiturkiye.com/forum/ adresini kullanınız!
1998-2006 www.delphiturkiye.com