[ popmilan76 @ 04.08.2015. 19:57 ] @
Imam dve tabele koje su u relaciji preko rednog broja,jedna je odmori,druga radnik....Tabela radnik ima polje postanski broj,i treba da bude to prikazano u detail bandu,a u subdetail da bude prikazano podaci za radnika....Kako to da uradim u query i da mi bude takav izvestaj...
[ popmilan76 @ 05.08.2015. 15:05 ] @
Evo da malo pojasnim...Imam 2 tabele,jedna je radnik,druga odmori,meni treba izvestaj koji izgleda ovako....

postanski broj(11000)---------tabela radnik
ime i prezime (petar petrovic i tako sva imena u posti 11000)--------tabela radnik
trajanje odmora od - do(dva datuma,i svi datumi vezani za tog radnika) ----- tabela odmori
[ popmilan76 @ 06.08.2015. 19:29 ] @
Ima li neko da pomogne ili su svi na odmoru?
[ savkic @ 06.08.2015. 19:42 ] @
Ne znam da li dobro pratim, tebi trebaju podaci iz tri tabele? Stavi prvi kveri da čita poštanske brojeve (SELECT DISTINCT POSTANSKI_BROJ FROM ...),
druga child komponenta koja prikazuje podatke prema poštanskom broju (SELECT IME FROM RADNICI WHERE ZIP_CODE = :MasterZipCode) i u trećoj (koja je child source od druge) svi podaci o tom radniku.
Dakle prvo povežeš sve kverije i datasourcove i onda ih dodeliš reportu. Za test napravi običnu formu sa tri grida gde je svaki vezan za jedan kveri i onda prati da li se pomeranjem aktivnog sloga u prvom i drugom gridu menjaju podaci u drugom i trećem.
[ popmilan76 @ 06.08.2015. 21:23 ] @
Probacu ovo...ja imam napravljen query za izvestaj napravljen u access i on je ovakav:


SELECT Radnik.jpm, Radnik.ime, Radnik.prezime, Odmori.dana_ukupno, Odmori.dana1, Odmori.[1 deo OD], Odmori.[1 deo DO], Odmori.dana2, Odmori.[2 deo OD], Odmori.[2 deo DO], radno_mesto.naziv, Radnik.rbr, jpm.naziv
FROM radno_mesto INNER JOIN (jpm INNER JOIN (Radnik INNER JOIN Odmori ON Radnik.rbr = Odmori.rbr) ON jpm.jpm = Radnik.jpm) ON radno_mesto.rm = Radnik.rm
WHERE (((Odmori.godina)=[Unesite željenu godinu:]));


i on radi i u Delphiju,skoro pa isti ovakav,samo bez dela sa where....ali ne prikazuje dobro podatke....
[ savkic @ 06.08.2015. 21:29 ] @
Tu imaš veliki join koji spaja podatke iz više tabela. Ako hoceš njega koristiti onda moraš sve podatke u QuickReportu ručno zadavati, ako želiš automatiku onda moraš raditi kako je QR i predviđen da radi, dakle preko posebnih master-child kverija, svaki za svoj deo posla.
[ captPicard @ 06.08.2015. 23:35 ] @
Imaš u demo primjerima od quickreporta jedan primjer koji radi jako slično ovome o čemu ti pričaš.
[ popmilan76 @ 07.08.2015. 16:01 ] @
Igore,ako sam dobro razumeo napravim jedan details sa query select jpm from jpm,drugi child od prvog select prezime,ime from radnik where jpm =:jpm i treci child zavistan od prethodnog gde ce ici select od,do,dana from radnik
[ savkic @ 07.08.2015. 16:11 ] @
Da, tri kverija ti trebaju, prvi za listu postanskih brojeva (imas i primer kako da to dobijes) pa na njega kacis kveri za radnike i opet na njega kveri za odmor radnika.
[ popmilan76 @ 07.08.2015. 16:34 ] @
Evo sada sam probao,izlista sve postanske brojeve(jpm) ali u child nema imena i prezimena radnika u tim postama
[ savkic @ 07.08.2015. 16:42 ] @
Nisi ih lepo povezao, pogledaj negde u Demo primerima Delphija, ima i jedan koji se tice Master-Detail relacije. Uradi jedan search kroz sve .dfm fajlove i trazi gde se spominje MasterSource pa idi redom i pogledaj sta rade i kako.
[ popmilan76 @ 07.08.2015. 21:00 ] @
Uspeo sam u prva dva levela da ih poredjam,dakle broj pose,ime i prezime radnika,ali mi nece da ispod svakog radnika izadje i kada je bio na odmoru...
query 1
select jpm,naziv from jpm

query2
select prezime,ime from radnik
where jpm =:jpm

query 3
select * from odmori
where rbr =:rbr


prvi query je detalis,drugi je subdetails i query 2 a treci sub details query 3 i nece mi to poslednje...
[ savkic @ 07.08.2015. 21:54 ] @
Taj treci mora da se referencira na drugi, a ti u drugom nigde nemas rbr polje.
[ popmilan76 @ 08.08.2015. 07:59 ] @
Stavio sam u drugi rbr,i opet nece....
drugi query je
select * from radnik
where jpm =:jpm
order by prezime



A kada napravim u trecem query select * from odmori
inner join radnik on (odmori.rbr = radnik.rbr)

Izlista mi sve radnike,ali posle spiska svih radnika za jednu postu izlista i datume god. odmora,a ja hocu da posle svakog radnik izadje njegov odmor...

[Ovu poruku je menjao popmilan76 dana 08.08.2015. u 09:35 GMT+1]
[ savkic @ 08.08.2015. 09:43 ] @
> Stavio sam u drugi rbr,i opet nece....

A da li si pravilno povezao data sourcove (MasterSource)? Proveri postavku, nešto propuštaš.
[ popmilan76 @ 08.08.2015. 12:24 ] @
Evo kako sam,znaci ova tri kverija sam postavio,i imam jedan details,i 2 sub details....
details je query 1,jedan sub je query 21,a drugi query 3....
query 2 i query 3 datasource je datasource 1,na koji je vezan query 1 ,znam da je neka glupost,ali ne znam sta...
[ savkic @ 08.08.2015. 15:42 ] @
Kveri 3 je child kveri od kverija 2, dakle datasource mora biti na njemu.
[ popmilan76 @ 08.08.2015. 16:31 ] @
Igore,sada mi stampa izgleda kako treba da izgleda,ali podaci iz odmori nisu dobri,prikazuje odmore koji nemaju veze sa tim radnikom..
[ captPicard @ 08.08.2015. 17:48 ] @
Nisu ti dobro povezani dataosurcevi ili ti nisu dobri upiti. Razmisli šta točno koji mora pokazivati i siguran sam da češ ih onda dobro povezati.
[ savkic @ 08.08.2015. 17:51 ] @
Ne znam, opet negde grešiš. Napravi novu formu i dodaj dva grida i vezi ih za kveri 2 i 3 (kveri jedan za sad izbaci). Isprobavaj sve varijante dok ne dobiješ normalnu master detail relaciju, kada to dobiješ dodaj i kveri 1 za koji ces nakaciti kveri 2.
[ popmilan76 @ 08.08.2015. 19:12 ] @
Moracu probati sve kombinacije.....Sada mi je

detailsband -------- gde imam query 1 koji je select jpm,naziv from jpm koji nakacen na datasource 1


qrsub detail -------- koji je query 2 koji je select rbr,ime,prezime from radnik where jpm =:jpm i ciji je dataset datasource 1

child detail ------- koji je query 3 koji je select * from odmori where rbr =:rbr i ciji je dataset datasource 1


meni treba da izlazi ovako....


11000
-----------
patar petrovic
-------------------
01.01.2015 - 01.02.2015 30 dana
02.03.2015 - 03.03.2015 30 dana

--------------------------
ivan ivanopvic
------------------
01.01.2015 -02.03.2015 60 dana
.
.
.
itd za svaku postu i svakog radnika.....




[ popmilan76 @ 08.08.2015. 19:33 ] @
I jos nesto,da li bih mogao da koristim sva ona polja iz onog mog velikog kverija iz access... stim sto je tu u izvestaju stavljeno
group details 1 deo
group details 2 deo
details - 3 deo

i polja su stavljena iz jednog kverija u sva tri nivoa izvestaja...Da li to mogu da primenim i ovde
[ captPicard @ 09.08.2015. 02:13 ] @
Koliko sam te skužio, DS za 3. query ti mora biti query2. Ne vidim kakva ti je logika da ti bude datasource prvi query??
[ popmilan76 @ 09.08.2015. 07:32 ] @
ne razumem ja tebe sada,kako query 3 ti mora biti query 2.....Ja imam jedan datasource na koji nakacen query 1, a svi drugi kveriji su zakaceni za njega...
[ savkic @ 09.08.2015. 12:56 ] @
Kreni sa proučavanjem primera koji dolaze uz Delphi i koji obrađuju Master-Detail relaciju između datasetova, takođe prouči help na tu temu, kad to budeš proučio i shvatio razumećeš i kako da postaviš odnose između ta tri kverija.
[ popmilan76 @ 09.08.2015. 22:17 ] @
Ma problem mi pravi taj treci...kada njega skinem,a ostanu sa ova dva,sve radi super...prikazuje sve poste i njihove radnike
[ popmilan76 @ 10.08.2015. 08:14 ] @
uspeo sam konacno,hvala svima na pomoci...Pozdrav.
[ popmilan76 @ 10.08.2015. 08:39 ] @
U stvari da ne zatvaram temu,imam jos jedan problem,a to je....da mi izlista sve radnike po postama,dakle i one koji nemaju odmor uopste,a one koje imaju vise od jednog prikaze samo prvi odmor,ali ne i ostale...
[ captPicard @ 10.08.2015. 10:37 ] @
Prouči
[ popmilan76 @ 11.08.2015. 19:55 ] @
Nisam jos uspeo da sredim ovaj report,i dalje mi prikazuje samo jedan odmor,ali ne i druge odmore za radnika,takodje prikazuje radnike koje nemaju uopste odmore za tu godinu....Sada mi je trenutno ovako:

detailsband -------- query 1 (select jpm,naziv froim jpm order by jpm) i datasource 1,ciji je dataset query 1
subdetail-------------query2(select ime,prezime,rbr from radnik where jpm =:jpm) datasource 2 ,ciji je dataset query 2,ciji je dataset datasource 1
child ----------------query 3 (select * from odmori rbr =:rbr) ,ciji je datasource 3,i njegov dataset query 3 ,ciji je dataset datasource 2



[ savkic @ 11.08.2015. 23:34 ] @
Mozes li ti prvo da napravis ta tri da rade nezavisno od QR, dakle nova forma i tri grida?
[ popmilan76 @ 12.08.2015. 08:02 ] @
Ali u ovom qreportu mi lepo rade 2 queryij ali ne radi lepo ovaj treci,i da li njega lepo pisem,mislim na select komandu,i on mi je child od prethodnog subdetailsa....
[ popmilan76 @ 12.08.2015. 08:03 ] @
Ali u ovom qreportu mi lepo rade 2 queryij ali ne radi lepo ovaj treci,i da li njega lepo pisem,mislim na select komandu,i on mi je child od prethodnog subdetailsa....
[ captPicard @ 12.08.2015. 12:44 ] @
Citat:
popmilan76:
child ----------------query 3 (select * from odmori rbr =:rbr) ,ciji je datasource 3,i njegov dataset query 3 ,ciji je dataset datasource 2


Nešto si ti tu pomiješao. Child band ima DataSet properti a ne DataSource, ako se ne varam. Query ne može imati DataSet, može imati samo neki DataSource. I ne možeš bandove slagati nasumično, svaki se drugačije ponaša, ovisno da li je detail, subdetail, child itd... Pogledaj u primjerima od Quickreporta, siguran sam da ima jedan primjer gdje se koristi MASTER-DETAIL veza. To iskoristiš i dobiti češ ono tša ti treba.
[ popmilan76 @ 12.08.2015. 21:40 ] @
Mozda sam uspeo nesto,ali videcu jos...Izgleda da nije problem u ovim datasetovima i slicno,nego u necem drugom....Query 3 treba da mi izlista samo jednu godinu koju ukucam u edit1.text...ovako

RepSpisakGodina.adoquery3.Close;
RepSpisakGodina.adoquery3.SQL.Clear;

RepSpisakGodina.adoquery3.SQL.Add('select * from odmori');

RepSpisakGodina.adoquery3.SQL.Add('where godina = ' + edit1.Text);


RepSpisakGodina.adoquery3.Open;


i u ovom kodu nemam where redbr =:redbr...vec sam to napravio na samom reportu,tj queryju,kako u ovaj kod da ubacim to where redbr =:redbr i da ga odredim....

[ captPicard @ 13.08.2015. 03:00 ] @
Sada te stvarno ne razumijem. Kako nisi ubacio u query a jesi u report???? Kako to misliš kako da ubaciš u query? Dodaš u where uslov, ako sam dobro shvatio tvoje pitanje.

p.s. Ako sam sve dobro povezao, fale ti osnove osnova. Ne možeš raditi tako zahtjevan report ako ne znaš složiti SQL upit. Ovo pišem dobronamjerno.
[ popmilan76 @ 13.08.2015. 15:38 ] @
Nije bitno,ne znam da objasnim i to ti je...snaci cu se vec...
[ captPicard @ 13.08.2015. 19:04 ] @
Code:
RepSpisakGodina.adoquery3.SQL.Add('select * from odmori');
RepSpisakGodina.adoquery3.SQL.Add('where godina = ' + edit1.Text);
RepSpisakGodina.adoquery3.SQL.Add('and redbr =:redbr);
[ popmilan76 @ 13.08.2015. 19:27 ] @
To vec nece,probano je...izlazi gresku....
[ captPicard @ 13.08.2015. 22:15 ] @
Citat:
captPicard:
Code:
RepSpisakGodina.adoquery3.SQL.Add('select * from odmori');
RepSpisakGodina.adoquery3.SQL.Add(' where godina = ' + edit1.Text);
RepSpisakGodina.adoquery3.SQL.Add(' and redbr =:redbr);


Pa kojom greškom, ne možemo ti pomoći ako ne napišeš grešku... Možda je problem u razmacima, pogledaj gore. Da li ti je povezano na datasource koji ima dataset sa parametrom redbr?
[ popmilan76 @ 14.08.2015. 07:53 ] @
Naravno da je to povezano,ne da drugacije...Ponovo sam se vratio na onaj prethodni query....

SELECT Radnik.jpm, Radnik.ime, Radnik.prezime, Odmori.dana_ukupno, Odmori.dana1, Odmori.[1 deo OD], Odmori.[1 deo DO], Odmori.dana2, Odmori.[2 deo OD], Odmori.[2 deo DO], radno_mesto.naziv, Radnik.rbr, jpm.naziv
FROM radno_mesto INNER JOIN (jpm INNER JOIN (Radnik INNER JOIN Odmori ON Radnik.rbr = Odmori.rbr) ON jpm.jpm = Radnik.jpm) ON radno_mesto.rm = Radnik.rm
where godina = 2015
order by jpm.jpm,radnik.prezime


i on je dobar,sve lepo pokazuje,jedino sto za svaki odmor pokazuje i naziv radnika....ovako nesto

11030
milan m,ilanovic
01.01.2015 - 01.02.2015 15 dana
11030
milan milanovic
02.02.2015 - 02.03.2015 15 dana

a ja hocu ovako

11030
milan milanovic
01.01.2015 - 01.02.2015 15 dana
02.02.2015 - 02.03.2015 15 dana
[ captPicard @ 14.08.2015. 10:17 ] @
Code:
SELECT [b][tu sam maknuo dio][/b] Odmori.dana_ukupno, Odmori.dana1, Odmori.[1 deo OD], Odmori.[1 deo DO], Odmori.dana2, Odmori.[2 deo OD], Odmori.[2 deo DO], radno_mesto.naziv, Radnik.rbr, jpm.naziv
FROM radno_mesto INNER JOIN (jpm INNER JOIN (Radnik INNER JOIN Odmori ON Radnik.rbr = Odmori.rbr) ON jpm.jpm = Radnik.jpm) ON radno_mesto.rm = Radnik.rm
where godina = 2015[b] and radnik.rbr = :rbr[/b]
order by jpm.jpm,radnik.prezime


Ovako češ dobiti samo za radnika koji je trenutno u datasetu na koji je povezan datasource.
[ popmilan76 @ 14.08.2015. 20:13 ] @
Ne valja ovaj kod,ali hvala na trudu....
[ popmilan76 @ 15.08.2015. 20:25 ] @
Uspeo sam da uradim sa onim prvobitnim upitom iz access,ali mi ne grupise podatke.....vec svaki podatak ponavlja...Jedan query i jedan daetails...