Delphi Can

Orjinalini görmek için tıklayınız: Rakam ve Karakterli Toplama
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Sayfalar: 1 2 3
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.
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ı.
(15-04-2019, Saat: 08:24)OZCANK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.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);
@OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Hangi linki ?
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@OZCANK bu linki inceleye bilirsin
ö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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@OZCANK bu linki inceleye bilirsin
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
ö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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Hangi linki ?
@Tuğrul HELVACI hocam kusura bakmayın linki ekledim zannetim 
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.

(15-04-2019, Saat: 12:16)OZCANK Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@OZCANK bu linki inceleye bilirsin
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
ö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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@OZCANK bu linki inceleye bilirsin
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
ö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ı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
(15-04-2019, Saat: 11:29)adelphiforumz Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.@OZCANK bu linki inceleye bilirsin
Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));

Hangi linki ?
(15-04-2019, Saat: 08:41)3ddark Adlı Kullanıcıdan Alıntı: Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
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
Havanda su dövülüyor.

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

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