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, Poliüretan
WWW
Cevapla
#3
(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);
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ı: @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ı: @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ı:
(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.
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ı:
(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 ?
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ı:
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
  Delphide time alanını toplama shooterman 3 537 14-09-2023, Saat: 13:03
Son Yorum: shooterman
  InputBox a sadece rakam girme. noname101 3 611 06-06-2023, Saat: 10:21
Son Yorum: COMMANDX
  farkli tablolardan verileri dataset e toplama sadikacar60 12 1.869 23-03-2023, Saat: 18:34
Son Yorum: sadikacar60
  delphi mssql toplama yunusemre 13 3.274 30-04-2022, Saat: 23:37
Son Yorum: dilanorkan
  saat toplama erdogan 9 3.308 24-12-2020, Saat: 17:21
Son Yorum: erdogan



Konuyu Okuyanlar: 1 Ziyaretçi