QReport ta otomatik bant numarası verme

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

QReport ta otomatik bant numarası verme

Mesaj gönderen bobasturk »

Merhaba

Qreportta tablodan aldığı verileri yani tüm kayıtları listeletiyorum. band üzerine qrsysdata bileşeninden koydum ve data sını detailno olarak ayarladım. gayet güzel sıra no ları veriyor fakat bilindiği üzere 0 dan başlıyor 0,1,2,3...

sıfırdan başlamasını istemiyorum ve forumda arama yaptım. onNeedData olayı incelenmesi isteniyor. çıkan sonuçlara baktım benim derdimde cevap yok fakat onNeedData kullanımı hakkında bir kaç bilgi var. onNeedData olayında bir şeyler yapmak istedim ama olmadı.

Bu işlemi yani qrsdetailno yu sıfırdan değilde 1 den başlatma olayını nasıl yapacağım hakkında yardımcı olursanız sevinirim.

Kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
conari
Üye
Mesajlar: 2102
Kayıt: 27 Nis 2006 03:10
Konum: İstanbul & Gebze Karışık

Mesaj gönderen conari »

Hiç yapmadım böle bir şey ama aklıma gelen;

bir calc alan ekleyip Sıra Numarasını kendin verdirmen.
Ordan da Rapora ekle
Bir kelimenin anlamını öğretsen bile yeter..
ResimResim
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

s.a.
bende raporlarımda sysdata yı kullanıyorum sıra numarası olarak ve 1 den başlıyor.
sıfır projede bi tabloyu yazdırmayı denesene. belki yaptığın bir ayardan dolayı değişiyordur.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Daha basit olarak şunu yapabilirsin.

- Rapor kısmında Global bir sayısal değişken tanımla. Sayac mesela
- QuickRepoert'un OnBeforPrint olayında bu değişkeni 1'e eşitle.
- O bahsi geçen Band'a normal QrLabel ekle.
- Bandın OnBeforePrint olayında QRLabelxx.Caption := IntToStr( Sayac ); ve ardında da Inc(Sayac);

- Hepsi bu... 8)
Resim
Resim ....Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

@aslan ustam qreport ta ne zaman böyle bir şey yapsam sıfırdan başladı. fast report ta ise line özelliği ile birden başlıyor. qr nin demosuna baktığımda line(0) ile sıfırdan başlamış.

raporlamayı sorgu şeklinde almıyorum. tablonun tamamı. topu topu 50-60 kayıt. yani isim listesi. sıfırdan başlaması kullanıcıyı ilk etapta listede toplam sayı açısından garipsemesine veya yanılmasına sebep olacak.

@muharrem ustam verdiğiniz tavsiyeyi yapmaya çalışacağım. şimdiye kadar global değişken verme, uygulama gibi bir çalışmam olmadığından niye yalan söyleyeyim tirene bakar gibi bakıyorum şuan.

tablodaki verinin recno sunu verme olayı olabilir mi? acaba.

Saygı ile teşekkürler kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Global Değişken tabiri gözünü korkutmasın, adı global, kendisi bildiğimiz Var demişken.. :lol:

- Delphi'de fiziksel konum itibariyle iki tür değişken vardır.

- Local Değişkenler - Global Değişkenler

- Şu an kullandığın türden değişkenlere Local Değişken diyoruz. Nedenini biliyorsun, bir procedure altında tanımladığın değişken sadece o procedure altında geçerlidir.

- Bizi ilgilendiren kısmı açısından; içinde bulunduğu procedure her çalıştığında ilk değerine döner. Yani burada bandın onBeforePrint olayı da bir procedure olduğundan bu değişkeni Local olarak burada tanımlarsak her çalışmasında sayacımız ilk değere döneceğinden sayaç özelliği olmayacaktır.

- Global değişken dediğimiz tür ise procedure'lerin dışında bir yerde tanımlanmış değişkendir. Önemli özelliği; Global değişkenin tanımlandığı satırı baz alırsak, daha aşağıdaki satırlarda bulunan tüm procedure / fonksiyonlarda tanınır ve aldığı değer, diğer bir procedure'de de okunabilir.

- Bizi ilgilendiren kısıma dönersek; bu değişkeni tanımlayacağın yer şudur. Yerini tam algılayabilmen için üstünü ve altını da yazıyorum.

Kod: Tümünü seç

var
  Form1  : TForm1;
  xSayac : Integer;

implementation
- Burada tanımladığın xSayac değişkeni artık tüm procedure ve onksiyonlarda tanınır ve işleme alınabilir.

- QuickReport'un OnBeforePrint olayında yapacağın işlem

Kod: Tümünü seç

  xSayac := 0;
- QRBand'ın OnBeforePrint olayında yapacağın işlem ise

Kod: Tümünü seç

  QRLabel999.Caption := IntToStr( xSayac );
Resim
Resim ....Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

@muharrem ustam teşekkür ve saygı ile. Ellerinden öperim. Öğretmenlerin elinden öpülür.

İnsan bir şey daha öğrenince ne kadar mutlu oluyor muhakkak bilirsiniz. Elinize dilinize sağlık. Hemen uygulamaya geçip pekiştireceğim.

Tekrar teşekkür ve saygı ile kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Kod: Tümünü seç

unit PrsListeQR;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, QuickRpt, QRCtrls, ExtCtrls;

type
  TQRPrsListe = class(TForm)
    QuickRep1: TQuickRep;
    QRBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRBand2: TQRBand;
    QRShape1: TQRShape;
    QRShape2: TQRShape;
    QRShape3: TQRShape;
    QRShape4: TQRShape;
    QRShape5: TQRShape;
    QRShape6: TQRShape;
    QRShape7: TQRShape;
    QRShape8: TQRShape;
    QRShape9: TQRShape;
    QRShape10: TQRShape;
    QRDBText1: TQRDBText;
    QRDBText2: TQRDBText;
    QRDBText3: TQRDBText;
    QRDBText4: TQRDBText;
    QRLabel2: TQRLabel;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRLabel6: TQRLabel;
    QRLabel7: TQRLabel;
    procedure QuickRep1BeforePrint(Sender: TCustomQuickRep;
      var PrintReport: Boolean);
    procedure QRBand2BeforePrint(Sender: TQRCustomBand;
      var PrintBand: Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  QRPrsListe: TQRPrsListe;
  xsayac:integer;

implementation

uses modul1;

{$R *.dfm}

procedure TQRPrsListe.QuickRep1BeforePrint(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  xsayac:=0;
end;

procedure TQRPrsListe.QRBand2BeforePrint(Sender: TQRCustomBand;
  var PrintBand: Boolean);
begin
  qrlabel7.Caption:=inttostr(xsayac+1);
  inc(xsayac);
end;

end.
Merhaba,

@muharrem ustam iki ayrı mesajınızı birleştirerek yukarıda uniti verdiğim gibi uyguladım ve sonuca ulaştım. İlk etapta +1 vermeden 0 değerinden başladı haliyle tabi. bir arttırmak aklıma geldi ve ilk mesajınızdaki inc(sayac) ipucunuda ekleyince sonuç istenildiği gibi oldu.

Teşekkür ve saygı ile kolay gelsin.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

- O kadar lafın arasında sayacı arttırmayı unutmuşuz.. :oops: :oops: :oops:

- Sayacı QRLabel'a aktardığın yerin hemen altına INC(xSayac); eklemeyi ihmal etmeyesin...

- Örnek :

Kod: Tümünü seç

  QRLabel999.Caption := IntToStr( xSayac ); 
  Inc(xSayac);

- // EK //


- Zaten çözmüşsün olayı... Tebrikler... 8)

- Bir soru gelebilir, daha önce başka başlıklarda açıklamıştım ama konu gereği burada da yazayım tavsiye de ederim...

Soru : Neden xSayac ? Başındaki x ne anlama geliyor... :?:

- Global değişkenler ile Local olanları ayırt etmek için kendimce uyguladığım bir metod. Global değişkenler diğer tüm bağlı unitlerde de geçerli olabildiğinden. Değişkenin başında x görürsem bakacağım yerler belli olsun isterim. :idea:
Resim
Resim ....Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Merhaba,

ustam fazla oluyorum ama öğrenmişken kafada soru kalmasın bu inc ne anlama geliyor. bir şeyin kısaltması ama ney. Yarım bilgi kalmasın ezbere olmasın diye.

kolay gelsin
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

inc( n ) - ingilizce increment yani arttırmak'ın kısaltması. dilersen inc( n, 1 ) şeklinde yanında kaç arttıracağını da verip kullanabilirsin.

dec( n ) - ingilizce decrease yani azaltmak'ın kısaltması. Aynı şekilde dec( n, 1 ) şeklinde yanında kaç azaltılacağını da verip kullanabilirsin.

- Yanındaki rakamlar verilmezse tahmin edeceğin üzere varsayılan olarak 1 kabul ediliyor.
Resim
Resim ....Resim
Kullanıcı avatarı
bobasturk
Kıdemli Üye
Mesajlar: 1387
Kayıt: 20 May 2004 08:39
Konum: Düzce

Mesaj gönderen bobasturk »

Teşekkür ederim ustam işlerinde kolaylıklar dilerim.
Şefkat-u Merhamette Güneş Gibi Ol.
Başkalarının Kusurunu Örtmekte Gece Gibi Ol.
Sehavet-u Cömertlikte Akarsu Gibi Ol.
Hiddet-u Asabiyette Ölü Gibi Ol.
Tevazu-u Mahviyette Toprak Gibi Ol.
Ya Olduğun Gibi Görün Ya Göründüğün Gibi Ol.

Resim
Cevapla