Delphi Can
Rakam ve Karakterli Toplama - Baskı Önizleme

+- Delphi Can (http://www.delphican.com)
+-- Forum: Delphi (http://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Genel Programlama (http://www.delphican.com/forumdisplay.php?fid=6)
+--- Konu Başlığı: Rakam ve Karakterli Toplama (/showthread.php?tid=3549)

Sayfalar: 1 2 3


Rakam ve Karakterli Toplama - OZCANK - 15-04-2019

Arkadaşlar Merhaba ; Tablodaki bir alanım Efatura gereği hem Karakter hemde rakam ifadesi alıyor bende son rakamı bir artırmalıyım şöyle bir kod yaptım ama bu seferde içerisinde yer alan sıfırları siliyor. Çıkmaza girdim yardımcı olabilir misiniz?

Tablodaki Alanın aldığı değer : "GSM000000452689" 
Kodda şunu yaptım;
ilk 3 değeri aldım "GSM"

Sonra son 12 değeri "000000452689"
sonra bir arttırmak istedim bu sefer de rakamı karaktere çevirince sıfırlar gitti bir arttı şöyle oldu
Sonra son 12 değeri "452690"
Birleştirince "GSM452690" aradaki sıfırlar kayboldu 



procedure TForm23.DBGrid1DblClick(Sender: TObject);
Var
EFATSERI,EFATSERISN:AnsiString;
begin
FatuNo.Close;
FatuNo.SQL.Clear;
FatuNo.SQL.Text:='select MAX(NUMARA) AS SONKAYIT from TBLFATUNO WHERE SUBE_KODU=''0'' AND TIP=''1'' AND NUMARA LIKE ''000%''';
FatuNo.Open;

Edit2.Text :=FatuNo.FieldByName('SONKAYIT').Text;

EFATSERI := AnsiLeftStr((Edit2.Text),3);
EFATSERISN := AnsiMidStr((Edit2.Text),4,12);
EFATSERILK.Text := EFATSERI;
EFATSERSON.Text := EFATSERISN;

Edit2.Text:=(EFATSERILK.Text + IntToStr(StrToInt(EFATSERSON.Text)+1));
Edit5.Text :=FatuNo.FieldByName('SONKAYIT').Text;
Edit7.Text:=Label19.Caption+Edit2.Text+DBEdit2.Text;
Yapmak istediğim "GSM00000000452690" 15 haneye tamamlamak.


Rakam ve Karakterli Toplama - 3ddark - 15-04-2019

EFATSERI{GSM} + StringOfChar('0', Length(EFATSERISN){12} - IntToStr(StrToInt(EFATSERSON.Text)+1)){000000} + IntToStr(StrToInt(EFATSERSON.Text)+1){452690}

veya Format anahtarını araştırın her durumda işinizi görecektir.

Fakat şunu da belirtmek isterim belki yazmayı unuttunuz ama E-Fatura Numara standardı bu şekilde değil.
Önce firmaya ait etiket GSM{Firma Ön eki} + 2019(FaturaDönemi) + Fatura Numarası = GSM2019000452689 şeklinde olmalı. Toplamda da 16 karakter olmalı.


Cvp: Rakam ve Karakterli Toplama - Tuğrul HELVACI - 15-04-2019

(15-04-2019, Saat: 08:24)OZCANK Adlı Kullanıcıdan Alıntı: Arkadaşlar Merhaba ; Tablodaki bir alanım Efatura gereği hem Karakter hemde rakam ifadesi alıyor bende son rakamı bir artırmalıyım şöyle bir kod yaptım ama bu seferde içerisinde yer alan sıfırları siliyor. Çıkmaza girdim yardımcı olabilir misiniz?

Tablodaki Alanın aldığı değer : "GSM000000452689" 
Kodda şunu yaptım;
ilk 3 değeri aldım "GSM"

Sonra son 12 değeri "000000452689"
sonra bir arttırmak istedim bu sefer de rakamı karaktere çevirince sıfırlar gitti bir arttı şöyle oldu
Sonra son 12 değeri "452690"
Birleştirince "GSM452690" aradaki sıfırlar kayboldu 



procedure TForm23.DBGrid1DblClick(Sender: TObject);
Var
EFATSERI,EFATSERISN:AnsiString;
begin
FatuNo.Close;
FatuNo.SQL.Clear;
FatuNo.SQL.Text:='select MAX(NUMARA) AS SONKAYIT from TBLFATUNO WHERE SUBE_KODU=''0'' AND TIP=''1'' AND NUMARA LIKE ''000%''';
FatuNo.Open;

Edit2.Text :=FatuNo.FieldByName('SONKAYIT').Text;

EFATSERI := AnsiLeftStr((Edit2.Text),3);
EFATSERISN := AnsiMidStr((Edit2.Text),4,12);
EFATSERILK.Text := EFATSERI;
EFATSERSON.Text := EFATSERISN;

Edit2.Text:=(EFATSERILK.Text + IntToStr(StrToInt(EFATSERSON.Text)+1));
Edit5.Text :=FatuNo.FieldByName('SONKAYIT').Text;
Edit7.Text:=Label19.Caption+Edit2.Text+DBEdit2.Text;
Yapmak istediğim "GSM00000000452690" 15 haneye tamamlamak.

Elektronik fatura entegrasyonu yapmaya çalışan birisinin Format ya da StringOfChar gibi string fonksiyonları bilmiyor olması ilginç. Ama olsun ben yine de paylaşımda bulunayım:

  
 ShowMessage(Format('Sayı : %0.12d', [1453]));
  ShowMessage(StringOfChar('0', 12 - Length(1453.ToString)) + 1453.ToString);



Rakam ve Karakterli Toplama - adelphiforumz - 15-04-2019

@OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));


Cvp: Rakam ve Karakterli Toplama - Tuğrul HELVACI - 15-04-2019

(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Hangi linki ?


Cvp: Rakam ve Karakterli Toplama - OZCANK - 15-04-2019

(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Merhaba, Link gözükmüyor.


Cvp: Rakam ve Karakterli Toplama - adelphiforumz - 15-04-2019

(15-04-2019, Saat: 12:16)OZCANK Adlı Kullanıcıdan Alıntı:
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK bu linki inceleye bilirsin
http://www.delphibasics.co.uk/RTL.asp?Name=formatfloat

örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Merhaba, Link gözükmüyor.



Cvp: Rakam ve Karakterli Toplama - adelphiforumz - 15-04-2019

(15-04-2019, Saat: 12:02)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Hangi linki ?
@Tuğrul HELVACI hocam kusura bakmayın linki ekledim zannetim 
http://www.delphibasics.co.uk/RTL.asp?Name=formatfloat

(15-04-2019, Saat: 12:16)OZCANK Adlı Kullanıcıdan Alıntı:
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK bu linki inceleye bilirsin
http://www.delphibasics.co.uk/RTL.asp?Name=formatfloat
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Merhaba, Link gözükmüyor.

(15-04-2019, Saat: 12:16)OZCANK Adlı Kullanıcıdan Alıntı:
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK bu linki inceleye bilirsin
http://www.delphibasics.co.uk/RTL.asp?Name=formatfloat
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Merhaba, Link gözükmüyor.

(15-04-2019, Saat: 12:02)Tuğrul HELVACI Adlı Kullanıcıdan Alıntı:
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: @OZCANK bu linki inceleye bilirsin
http://www.delphibasics.co.uk/RTL.asp?Name=formatfloat
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Hangi linki ?



Cvp: Rakam ve Karakterli Toplama - OZCANK - 16-04-2019

(15-04-2019, Saat: 08:41)3ddark Adlı Kullanıcıdan Alıntı:
EFATSERI{GSM} + StringOfChar('0', Length(EFATSERISN){12} - IntToStr(StrToInt(EFATSERSON.Text)+1)){000000} + IntToStr(StrToInt(EFATSERSON.Text)+1){452690}

veya Format anahtarını araştırın her durumda işinizi görecektir.

Fakat şunu da belirtmek isterim belki yazmayı unuttunuz ama E-Fatura Numara standardı bu şekilde değil.
Önce firmaya ait etiket GSM{Firma Ön eki} + 2019(FaturaDönemi) + Fatura Numarası = GSM2019000452689 şeklinde olmalı. Toplamda da 16 karakter olmalı.

Merhaba ; Bu şekilde de kullanınca 

Edit2.Text:=(EFATSERILK.Text + StringOfChar('0', Length(EFATSERISN)) - IntToStr(StrToInt(EFATSERSON.Text)+1));


Operatör bu işlemsel tip için geçerli değil Sad
Tüm tip değişkenlerini kullandım sıfırlar yok oluyor Sad


Rakam ve Karakterli Toplama - mrmarman - 16-04-2019

Havanda su dövülüyor.

@Tuğrul HELVACI cevabı vermiş neden gözden kaçırıyorsunuz? 

 
sonuc := format( 'GSM%.12d', [ rakam ]);