Fast reportda master,detay

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Fast reportda master,detay

Mesaj gönderen nuran »

Fast Reportda master detay ilişkisini kurdum sorun yok.
Ancak Her masterde sayfa başı yapıyor.Sayfa başı istemiyorum.
Master bilgisi
detay bilgisi

Master bilgisi
detay bilgisi

şeklinde yazsın. Yani her masterda sayfa başı yapmasın. Bunu nasıl önlerim.
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

Her master da sayfa başı yapıyor.
Kodlama aşağıdaki şekilde.
frxreport1.ShowReport komutu döngü içinde olduğu içinmi yapıyor sayfa başını..


adosevkoku.Close;
adosevkoku.SQL.Clear;
adosevkoku.SQL.Add('select distinct gelenid from ipliksevk2 ');
adosevkoku.Open;
adosevkoku.First;
while not adosevkoku.eof do
begin
wgirisid:=adosevkoku.fieldbyname('gelenid').value;
adogiris.Close;
adogiris.SQL.Clear;
adogiris.SQL.Add('select * from iplikgirisi ');
adogiris.SQL.Add('where refno = '''+wgirisid+''' ');
adogiris.open;
adogiris.First;


adosevk.Close;
adosevk.SQL.Clear;
adosevk.SQL.Add('select * from ipliksevk2 ');
adosevk.SQL.Add(' where gelenid = '''+wgirisid+''' ');
adosevk.Open;
adosevk.First;

frxreport1.ShowReport;
adosevkoku.Next;
end;
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Fast reportda master,detay

Mesaj gönderen yusuf simsek »

MasterBand üzerinde sağ tıklayıp "Yeni sayfada başlat" seçimini iptal ederseniz sorununuz düzelir.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

Yeni sayfada başlat seçeneği aktif değil zaten..Ama genede ayrı bir sayfada veriyor. Bu sorunu çözmem lazım..
Benim yukardaki sorgudan olabilrimi..Ama sorguda o iekilde olmak zorunda..
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

Arkadaşlar, fastreport daki master detay sorgusunu yapamadımi bana yardımcı olurmusunuz...
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Fast reportda master,detay

Mesaj gönderen yusuf simsek »

sorguyu sürekli yenibaştan mı oluşturuyorsunuz!

forma master ve detail sorguların olduğu iki query ve bunlara bağlı iki datasource ekleyiniz,

detail query DataSource için masterdatasource seçiniz...

ve bu queryleri fxreport'ta bağlayınız...

while ile kurduğunuz döngüyü master query içerisinde

"where gelenid IN ( Select distinct gelenid from ipliksevk2 )" şeklinde ekleyerek while döngüsünden kurtulunuz.

rapor yazdır butonu tıklandığında master query ve detail query aktif ederek showreport yapınız...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

master----adosevk
detay ---adogiris
yazdığınız gibi (' where gelenid IN (select distinct gelenid from ipliksevk2) ');
aşağıdaki şekilde adosevkoku içerisine yazdım ancak hata alıyorum.


adosevkoku.Close;
adosevkoku.SQL.Clear;
adosevkoku.SQL.Add(' where gelenid IN (select distinct gelenid from ipliksevk2) ');
adosevkoku.Open;
adosevkoku.First;
// while not adosevkoku.eof do
// begin
wgirisid:=adosevkoku.fieldbyname('gelenid').value;
adogiris.Close;
adogiris.SQL.Clear;
adogiris.SQL.Add('select * from iplikgirisi ');
adogiris.SQL.Add('where refno = '''+wgirisid+''' ');
adogiris.open;
adogiris.First;


adosevk.Close;
adosevk.SQL.Clear;
adosevk.SQL.Add('select * from ipliksevk2 ');
adosevk.SQL.Add(' where gelenid = '''+wgirisid+''' ');
adosevk.Open;
adosevk.First;


frxreport1.ShowReport;
// adosevkoku.Next;
// end;
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Fast reportda master,detay

Mesaj gönderen yusuf simsek »

adosevkoku.Close;
adosevkoku.SQL.Clear;
adosevkoku.SQL.Add(' where gelenid IN (select distinct gelenid from ipliksevk2) ');
adosevkoku.Open;
adosevkoku.First;
sql sorgusunu CLEAR komutu ile temizledikten sonra ADD komutu ile sadece "where" şart satırını ekliyorsunuz! hata almanızın sebebi bu...

Kod: Tümünü seç

adogiris.Close;
adogiris.SQL.Clear;
adogiris.SQL.Add('select * from iplikgirisi ');
adogiris.SQL.Add('where refno IN (select distinct gelenid from ipliksevk2) ');
adogiris.open;

adosevk.Close;
adosevk.SQL.Clear;
adosevk.SQL.Add('select * from ipliksevk2 ');
adosevk.SQL.Add(' where gelenid = IN (select distinct gelenid from ipliksevk2) ');
adosevk.Open;

frxreport1.ShowReport;


ADO nesnesinde MasterSource özelliği olmadığı için FastReport - detailband üzerinde ADOGIRIS ve ADOSEVK sorgularında ki ortak alanları birbirine eşitlenem gerekli...

Bu işlemi de Fast Report üzerinde DetailBand.OnBeforePrint olayında kontrol ederek yapabilirsin..

Kod: Tümünü seç

  if frxDataGiris."ilişkili Alan Adı" <> frxDataSevk."ilişkili Alan Adı" ) then
     DetailBand.Visible := False
  else
     DetailBand.Visible := True;

bu bir yöntem.

Eğer fast reportta kod yazmak istemezsen yazdır butonu altında ki AdoSevk ile ilgili sorguyu silip, AdoGiris nesnesine bağlayacağın bir DataSource nesnesinin OnDataChange olayına

Kod: Tümünü seç

adosevk.Close;
adosevk.SQL.Clear;
adosevk.SQL.Add('select * from ipliksevk2 ');
adosevk.SQL.Add(' where  [ ilişkili alan adı ] = ' + adogiris.fieldByName(' ilişkili Alan Adı ').AsString ');
adosevk.Open;


şeklinde de yazabilirsin.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

Yardımlarınız için çok teşekkür ederim..

adosevk.Close;
adosevk.SQL.Clear;
adosevk.SQL.Add('select * from ipliksevk2 ');
adosevk.SQL.Add(' where gelenid = IN (select distinct gelenid from ipliksevk2) ');
adosevk.Open;

buradaki IN 'e hata alıyorum...inşallah bu konuyu sonuçlandırırım...
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Fast reportda master,detay

Mesaj gönderen yusuf simsek »

çok pardon :) ezbere yazınca böyle oluyor...

hata aldığın satırda ki "=" kaldırırsan sorun çözülecek... "IN" kullanılan yerde "=" kullanılamaz
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

procedure DetailData2OnAfterPrint(Sender: TfrxComponent);
begin
if (frxDBDataGiris.refno) <> (frxDBDataSevk.gelenid) then
DetailBand.Visible := False
else
DetailBand.Visible := True;
end;


undeclared idendifier ' frxDBDataGiris'

hatası alıyorum...
fastreportda
datatree de frxDBdataGiris olarak tanımlı
bun abağlı sorguda adogiris.. oalrka tanımlı
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

Arkadaşlar

Fast report V4.3 ü kullanıyorum , Help dosyası yok. Help dosyasını nasıl kurabilirim. Yardımcı olursanız sevinirim.
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Fast reportda master,detay

Mesaj gönderen yusuf simsek »

Kodu AfretPrint olayına değil beforePrint olayına yazman gerekir... AfterPrint'te zaten ilgili kayıtla ilgili bütün iş bitmiş oluyor...

Kod: Tümünü seç

procedure DetailData1OnBeforePrint(Sender: TfrxComponent);
begin 
if  <frxDBDataGiris."refno"> = <frxDBDataSevk."gelenid"> then
       DetailBand.visible := True
 else
       DetailBand.visible := False;
end;
şeklinde tekrar denermisin. FastReport ta "<" ve ">" işaretleri özel karakterlerdir. if komutunda "<>" ( farklı ) şeklinde bir kullanımda hata alabilirsin. bu yüzden "=" ( eşit ) değerini kontrol edip "ELSE" bloğunda kodları yazmak daha uygun olur...

http://www.fast-report.com/en/download/ ... nload.html

adresinde "Documentation" altında fast report yardım dosyasını indirebilirsin.
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
nuran
Üye
Mesajlar: 43
Kayıt: 07 Tem 2008 03:50

Re: Fast reportda master,detay

Mesaj gönderen nuran »

Yusuf Bey çok teşekkür ederim..
FAst report oldu..

Ben aşağıdaki 2 sorgu arasındaki bağlantıyı anlayaamdım. Bu konuyu açıklarsanız sevinirim.
Adogirisi anladım, ancak
2.sorguda adosevk ile adogiris arasındaki bağlantıyı anlayamadım.
YArdım için gönderdiğiniz linki tıklayacağım, otomatik olarak kendisi kuracakmı , fast reportda help'e tıklayınca görecekmiyim.



adogiris.Close;
adogiris.SQL.Clear;
adogiris.SQL.Add('select * from iplikgirisi ');
adogiris.SQL.Add('where refno IN (select distinct gelenid from ipliksevk2) ');
adogiris.open;

adosevk.Close;
adosevk.SQL.Clear;
adosevk.SQL.Add('select * from ipliksevk2 ');
adosevk.SQL.Add(' where gelenid IN (select distinct gelenid from ipliksevk2) ');
adosevk.Open;
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Fast reportda master,detay

Mesaj gönderen yusuf simsek »

Rİca ederim, faydamız dokunduysa ne mutlu

Alanları yazmadığınız için İki sorgu arasında nasıl bir bağ var ben de bilmiyorum :)

mesajlarınızda yazdığınız sorgulardan yola çıkarak sadece yönlendirmeye çalıştım...

Kolay gelsin
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
Cevapla