Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Rakam ve Karakterli Toplama
#1
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.
Cevapla
#2
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ı.
PostgreSQL - Linux - Delphi, Linkleri Görebilmeniz İçin Üye Olmanız Gerekiyor. Üye Olabilmek İçin Lütfen Buraya Tıklayınız.
WWW
Cevapla
#3
(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);
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#4
@OZCANK bu linki inceleye bilirsin
örnek olarak
ShowMessage('GSM' +formatfloat('000000000000', float));
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#5
(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 ?
Mal sahibi, mülk sahibi
Hani bunun ilk sahibi ?
Mal da yalan mülk de yalan
Var biraz da sen oyalan...
WWW
Cevapla
#6
(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.
Cevapla
#7
(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.
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#8
(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 ?
Bu dünyada kendine sakladığın bilgi ahirette işine yaramaz. 
Cevapla
#9
(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
Cevapla
#10
Havanda su dövülüyor.

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

 
sonuc := format( 'GSM%.12d', [ rakam ]);
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  fastreport nesnesinde ki memoları tek memo da toplama nmtsltn 13 1.748 23-11-2018, Saat: 15:53
Son Yorum: mcuyan
  Parayı çarpma ve toplama işlemi serhat 15 2.822 17-06-2017, Saat: 22:35
Son Yorum: meko



Konuyu Okuyanlar: 1 Ziyaretçi