Quickreport

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Quickreport

Mesaj gönderen bgoktas »

Quickreportta grupbandın expr. 'ına table1.sicilno yu verdim. raporun datasetinede table1'i verdim. detail banda ise table1'deki diğer alanları yazdırdım. raporum sağlıklı bir şekilde çalışıyor. fakat benim table2 diye bir tablem var buradada table1 de olduğu gibi sicil no var ben bu tableyide ilişkili gruba eklemek istiyorum. Biraz karışık anlattım herhalde :o

şimdi aşağıya olayı çizerek anlatmaya çalışacağım.

table1;

sicilno ad soyad avans tarih

0001 a a 12 01.01.2004
0001 a a 15 01.05.2004
0002 b b 23 01.01.2004
0002 b b 12 05.01.2004


table2;

sicilno doğumtarihi doğumyeri

0001 1979 malatya
0002 1977 elazığ


rapor çıktısı şu anda

-----------------------------------
sicilno:0001 ad:a soyad:a

----------------------------------
avans tarih

12 01.01.2004
15 01.05.2004

-----------------------------------
sicilno:0002 ad:b soyad:b

----------------------------------
avans tarih

23 01.01.2004
12 05.01.2004


şeklinde ben ise raporu şu şekilde almak istiyorum.


-----------------------------------
sicilno:0001 ad:a soyad:a
doğum yeri-tarihi:malatya-1979
----------------------------------
avans tarih

12 01.01.2004
15 01.05.2004

-----------------------------------
sicilno:0002 ad:b soyad:b
doğum yeri-tarihi:elazığ / 1977
----------------------------------
avans tarih

23 01.01.2004
12 05.01.2004

yardımlarınız için şimdiden teşekkürler...[/b]
mcihad
Üye
Mesajlar: 283
Kayıt: 18 Tem 2003 03:28
Konum: Sivas

Mesaj gönderen mcihad »

Ne Demk istediğini tam anlamadım ama
:(
Detail Bandı biraz geniş tutup alt satıra Birkaç QRDBText Koy Olsun Bitsin
Bize iyilik yaraşır.
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

iyide abicim, tableler farklı olduğundan detail bandda sadece bir tableyi yazdıramıyormuyuz.
Kullanıcı avatarı
akgun83
Üye
Mesajlar: 106
Kayıt: 26 Eyl 2003 11:34

Mesaj gönderen akgun83 »

Merhaba,
Tablo yerine Query kullanıp tablolarıda joinler ile birleştirip tek tablo gibi raporlama yapın olsun bitsin?

Kod: Tümünü seç

   SELECT MAS.SICILNO, MAS.AD, MAS.SOYAD, DET.DOGUMYERI, DET.DOGUMTARIHI 
   FROM TABLO1 MAS, TABLO2 DET
   WHERE MAS.SICILNO = DET.SICILNO
Kolay Gelsin.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

table1 ve table2 den join ile alacagınız bir select cumlesi master'daki butun bilgileri cekip getirirse master tek dataset olcagi icin mesele kalmaz....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

hesaplanabilir alanlar olduğu için joini kullanmam durumunda bu fieldlar'ı
göremiyeceğim. Aslında ben daha önce hesaplanan bu alanları yani table2 deki bazı alanları lookup olarak table1 e attım. istediğim şey tamamen oldu fakat, en az 10 tane hesaplanabilir alan olduğundan rapor alırken müthiş bir yavaşlama oldu.(yukarıdaki örnekte verdiğim table1 ve table2 anlaşılması kolay olsun diye sadeleştirilmiştir. )

Not:bu arada ilk defa bir konu başlığı açtım. diğer sitelerde olmadığı kadar
ilgi beni çok memnun etti. bütün yönetici ve üyelere teşekkürler
Kullanıcı avatarı
akgun83
Üye
Mesajlar: 106
Kayıt: 26 Eyl 2003 11:34

Mesaj gönderen akgun83 »

Merhaba,
Şöyle bir çözüm önerilebilir;
sicil no alanının altına 1 tane QRLabel koyun. detay bandın BeforePrint olayında da raporlanan kaydın sicil nosunu alıp bir sorgu ile bu sicile ait bilgilere erişin ve doğum yeri / tarihi bilgilerini labelin captionuna atayın.

Kod: Tümünü seç

-- Before Print()
Begin
  Query1.Close();
  Query1.Sql.Add('SELECT * FROM TABLO2 WHERE SICILNO='+QuotedStr(Table1.FieldByName('SICILNO').AsString);
  Query1.Open();
  QRLabel1.Caption := Query1.FieldByName('DOGUMYERI').AsString;
End;
Kolay Gelsin.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

isterseniz tablo yapınızı tam olarak verin bir bakalım. Select cümleleri ile halledilemeyecek rapor çok azdır. Çok azdır dememin sebebi de kullandığınız veritabanının darboğaz ihtimalinden dolayı diyorum.... Eğer imkanları geniş bir veritabanı kullanıyorsanız stored procedure yazarak hallolmayacak problem yok. Buna garanti verebilirim....

Simdi sizin problemde lookup alanların fazla olması yavaslama yapar tabi ama oyle 10 -20 tane lookup müthiş derecede diye ifade edilecek bir yavaşlama yapmaması gerekir.
hesaplanabilir alanlar olduğu için joini kullanmam durumunda bu fieldlar'ı
göremiyeceğim.
Bunu anlamadım. hesaplanabilir alanlar nedir neden goremeyesiniz?
[/quote]bu arada ilk defa bir konu başlığı açtım. diğer sitelerde olmadığı kadar ilgi beni çok memnun etti
sağolsun forumu takip eden bütün arkadaşlar bilgiyi paylaşmadan birbiri ile yarış halindeler... Güzel bir ortam oldu çok şükür el birliği ile devam ettirmeye çalışıyoruz. Aramıza hoşgeldiniz..... :)

Kolay gelsin....
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

öncelikle interbase kullanıyorum. ve ibtoollarla dataya bağlanıyorum.

table1 de;

sicilno,
ad,
soyad,
maaş
fazlamesai
devamsızlık gibi alanlar var artı olarakta
yaptığı mesai tutarını hesaplayan mesai tutarı ve devamsızlık tutarı gibi hesaplanan alanlar var. bu iki alanı(aslında bende bu alanlar daha fazla)
fiziksel olarak databasede yok, databasede olmadığından join işlemi direk database üzerinde işlem yaptığı için benim yukarıda örnekte vermiş olduğum örnekteki iki fieldım select sonucu olarak dönmeyecek.
Programın lookuplar sonucu yavaşlaması ise; ben table2deki hesaplanan alanları table1'e lookup yaptım. yavaşlamanın nedeni bu.
Bilmiyorum yanlışım mı yapıyorum. İlginize teşekkürler.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

hesaplanan alanlar dediginiz. Calculated alanlar herhalde.... Bunalr için 2 care var bence.
1. Bu hesap eger cok kompleks degilse yazacaginiz bir stored procedure icinde joinin yani sira bu alanları da veritabanında hesaplatın. Bu yontem en iyi ve hızlı yontem olur. Eger pratikte mumkun olabilirse. Teoride mumkun oldugunu biliyorum ama kolay olmayabilir. Hesabın sekline gore degisir durum.
2. Siz yine joini yapın ve bu calculated alanları aynen join ile butun alanları getiren tabloya ekleyin... Oncalcfields eventine de aynı kodları kopyalayın.
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

hesaplanan alanlardan kastım calc. fieldlar

firebird de stored proc. şu ana kadar hiç yazmadım. dolayısıyla en mantıklısı 2. şık gibi görünüyor. fakat buradaki sıkıntı table1calcfield'ı değiştirdiğim zaman queryide değiştirmem gerekecek.
En son bgoktas tarafından 10 Ağu 2007 03:40 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Kullanıcı avatarı
fahrettin
Admin
Mesajlar: 2619
Kayıt: 11 Haz 2003 10:38
Konum: İstanbul
İletişim:

Mesaj gönderen fahrettin »

eger sık sık degisecek bir hesapsa parametreik bir fonksiyon haline getirmek o meseleyi de halledebilir...
* http://www.fahrettin.org Manzara Fotoğraflarım... :)
* http://delphiturkiye.gunduz.info Seminerler... ;)
* http://www.hakmar.com.tr Kalite bir haktır... 8)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Selam...

- QuickReport ile başka bir grup deneyimi için ..

viewtopic.php?t=1918 linkini bir inceleyin...
Resim
Resim ....Resim
bgoktas
Kıdemli Üye
Mesajlar: 769
Kayıt: 27 Nis 2004 10:32
Konum: istanbul

Mesaj gönderen bgoktas »

mrmcop yazdı:Selam...

- QuickReport ile başka bir grup deneyimi için ..

viewtopic.php?t=1918 linkini bir inceleyin...
soruyu dikkatli okursanız, raporu grup ile aldığımı görebilirsiniz...

Bütün cevaplar için çok teşekkür ederim. Sorunu join ile hallettim.
sql ile tek dataset haline getirerek calc fieldlarıda yeni query için tekrar oluşturdum.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4741
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Mesaj gönderen mrmarman »

Özür dilerim... Soruyu dikkatle okumamışım... :(
Resim
Resim ....Resim
Cevapla