[ popmilan76 @ 05.08.2016. 10:42 ] @
Treba da napravim qreport,koji bi trebao izgledati ovakO:
Naziv mesec godina telefon
xxxxxxx xxxxxxxxxxxxx
06 2016
07 2016
08 2016
... .....


kada sam napravio dbgrid koji se puni pomocu upita

SELECT ZaNaplatu.SifraKlijenta, ZaNaplatu.Naziv, ZaNaplatu.Mesec, ZaNaplatu.Godina, ZaNaplatu.Telefon, ZaNaplatu.Telefon1
FROM ZaNaplatu LEFT JOIN Promet ON (ZaNaplatu.MeseciID = Promet.Mesec) AND (ZaNaplatu.Godina = Promet.Godina)
WHERE (((Promet.Mesec) Is Null) AND ((Promet.Godina) Is Null))
ORDER BY ZaNaplatu.SifraKlijenta, ZaNaplatu.Godina, ZaNaplatu.MeseciID;



izlaze ovaki podaci

xxxxxxxxxxx 06 2016 xxxxxxxxxxx
xxxxxxxxxxx 07 2016 xxxxxxxxxxxx
..... ... .... xxxxxxxxxxxxxx


Znam da ide nesto pomocu subreporta,probao sam ali nesto ne ide......
[ savkic @ 05.08.2016. 12:16 ] @
Kako se to razlikuje u odnosu na ono sto tebi treba? Koliko vidim dobijas podatke kao i u tvom zeljenom primeru?
[ popmilan76 @ 05.08.2016. 14:09 ] @
Pa ne dobijam takve podatke,dobijam kao i u dbgridu,a ja hocu da bude jedan radnik,pa svi meseci i godine,ispod tog radnika,pa sledeci radnik i sve tako...
[ Rapaic Rajko @ 05.08.2016. 14:58 ] @
Citat:
popmilan76:
Znam da ide nesto pomocu subreporta,probao sam ali nesto ne ide......


Mislio si na subdetails, postoji subdetail band u QReport-u itd.itd. Sve pise u helpu.

Pozz
[ popmilan76 @ 05.08.2016. 15:12 ] @
Da,znam da postoji ali sta sa njim,nije mi jasno,probao sam i sa child details,ali nista....Sta stavljam u details band a sta u subdetails...
[ savkic @ 05.08.2016. 15:19 ] @
Nisi ni napisao sta zelis da ti bude u glavnom reportu, pretpostavljam da je to ime korisnika i da zelis na jednom reportu podatke o svim korisnicima.

Onda u glavni band stavljas dataset koji prikazuje podatke o korisnicima a u subdetails band stavljas dataset (i podatke iz njega) o telefonima koji su vezani za tog korisnika. Dakle sto se tice Delphija treba da imas dva dataseta u master/child relaciji.
Pogledaj QR primere, ima nekoliko primera te vrste.
[ popmilan76 @ 05.08.2016. 15:37 ] @
Da,hocu da glavni band bude ime i prezime,a subdetails podaci neki....ali ja imam jedan dataset...da li treba da formiram jos jedan,koji bi bio nestop kao

select naziv from klijenti
where naziv = :naziv


i da bude on u glavnom bandu,a ovaj drugi,child u vec postojeci
[ savkic @ 05.08.2016. 17:12 ] @
Mislim da ti ne razumes koncept master/detail odnosno parent/child relacije, moras se bolje informisati u tom delu, ima nekih tekstova u Delphi helpu (D7, mozda i u novijim), takodje i na internetu ima dosta da se nadje pa ti to toplo preporucujem nezavisno od svega ovoga.

Drugi, child upit si manje-vise, sam dao:

SELECT
ZaNaplatu.Mesec, ZaNaplatu.Godina, ZaNaplatu.Telefon, ZaNaplatu.Telefon1
FROM
ZaNaplatu
LEFT JOIN Promet ON (ZaNaplatu.MeseciID = Promet.Mesec) AND
(ZaNaplatu.Godina = Promet.Godina) AND
ZaNaplatu.SifraKlijenta = :SifraKlijenta
WHERE
(((Promet.Mesec) Is Null) AND ((Promet.Godina) Is Null))
ORDER BY
ZaNaplatu.Godina, ZaNaplatu.MeseciID;


[ popmilan76 @ 05.08.2016. 17:43 ] @
Kada treba da aktiviram query izlazi mi greska ...nesto kao ...parameter is improperly defined...pa kada definisem parametar sifraklijenta kao integer,onda mi izlazi join expressions not suported...
[ savkic @ 05.08.2016. 18:16 ] @
Pogledaj Delphi primer kao i QR primer za master/detail relaciju i vidi kako je tamo napisano.
[ popmilan76 @ 05.08.2016. 20:43 ] @
Uspeo sam,hvala Savkicu,znao sam da postoji ovaj quick report help,ali nikada nisam nesto otvarao to,misleci to je nesto komplikovano....Uradio sam tako sto sam glavni band stavio obican table a za child query....
[ popmilan76 @ 08.08.2016. 20:17 ] @
Nastavio bi na ovoj temi,da ne otvaram novu.....
Napravio sam da mi idu podaci ovako
naziv mesec godina
milan 05 2016
.... .....


E,sad zbog ustede papira trebalo bi da ide ovako,horizontalno,a ne vertikalno
milan 05.2016,06.2016,07.2016 .....

Jel to izvodljivo....
[ savkic @ 08.08.2016. 20:59 ] @
Jeste ali ne direktno, moraš sam napraviti kolone (polja) u recimo stored proceduri (moraš znati unapred sva polja i mora ih biti fiksan broj) ili možeš napraviti u Delphiju. Učitaš sve podatke u programu, napraviš novi dataset i onda redom kreneš i praviš polja i dodeljuješ vrednosti iz ranije učitanih podataka.
[ popmilan76 @ 08.08.2016. 22:52 ] @
Uspeo sam,hvala Savkicu,nista bez vas....postavio sam obican label,i u njega stavljam dva polja iz upita....

[ popmilan76 @ 09.08.2016. 07:07 ] @
E,sada mi nastaje problem,kada se napuni prvi red sa podacima,ne prelazi u drugi red....vec samo prikaze sto moze u prvom redu.....Evo koda

with neplaceno do
begin
Close;

Open;
qrlabel4.Caption := '';
First;


While not EOF do
begin

qrlabel4.Caption := qrlabel4.Caption + Fields[2].AsString + ' - ' + Fields[3].AsString + ' , ';

Next;
end;
end;
[ savkic @ 09.08.2016. 07:44 ] @
Tebi tu treba, prelazak u novi red, ne znam da li qrLabel ima neku komandu da forsira novi red ili ces morati da za svaki novi red pravis novu label komponentu (podesis i visinu) i onda stampas.
[ popmilan76 @ 09.08.2016. 08:19 ] @
Ako postavim jos jedan qrlabel ispod ovoga,on ce se ponasati isto kao prethodni...imacu dva reda sa istim podacima.....a ne postoji opcioja force new row,samo force new columns,i force new page...
[ captPicard @ 09.08.2016. 08:41 ] @
Imaš neki dobar razlog da koristiš QRLabel? Zašto ne QRDBText?
Pogledaj malo demo QReporta, prilično sam siguran da imaju na primjeru prikazano to šta tražiš.
[ savkic @ 09.08.2016. 08:45 ] @
Za tebe je novi red novi korisnik? Onda napravi novi label kad naidjes na novog korisnika ili vec sta je uslov da se podaci prebace u novi red.
[ captPicard @ 09.08.2016. 08:58 ] @
Btw, u samom SQL upitu možeš dobiti listu. Ako koristiš Firebird, pogledaj funkciju LIST.
[ popmilan76 @ 09.08.2016. 09:29 ] @
Nije firebird,vec access je u pitanju....captipicard mi je to vec radio,samo u memo fields....ne mora qrlabel vec moze i qrdbtext ali je to cini mi se nemoguce...
[ popmilan76 @ 09.08.2016. 20:13 ] @
Citat:
savkic:
Za tebe je novi red novi korisnik? Onda napravi novi label kad naidjes na novog korisnika ili vec sta je uslov da se podaci prebace u novi red.



Ne,nije novi red novi korisnik,vec je novi red red sa mesecima za pojedinacnog korisnika....


Otprilike ovako

Pera Peric
januar 2006,februar 2006,.......i tako dodje do krajua reda i da nastavi u sledeci
Septembar 2010,oktobar 2010 ...


[ captPicard @ 10.08.2016. 07:38 ] @
QRMemo
[ popmilan76 @ 10.08.2016. 08:20 ] @
Sta,jel treba samo da zamenim,da ne bude qrlabel,i ubacim qrmemo....
[ popmilan76 @ 10.08.2016. 21:43 ] @
Kod mene je slucaj da stigne do kraja reda,i ne nstavlja novi red,iako ima za tog korisnika....vec mi odmah ide sledeci korisnik....
[ popmilan76 @ 11.08.2016. 13:42 ] @
Ima li resenja ovde kod mene?
[ savkic @ 11.08.2016. 14:17 ] @
Ne razumem sta je tacno problem. Poenta je da ti ovde kontrolises sve, kad ide novi red, koji je uslov za to u podacima (datasetu).
[ popmilan76 @ 11.08.2016. 15:16 ] @
Novi red ide kad stignu podaci do kraja reda,pa se nastavlja u drugi red,i sve tako.....dokle ima podataka...Ne znam jel treba ovaj gore kod da postavim u event before print ili onneed data
[ captPicard @ 11.08.2016. 20:26 ] @
Okači primjer jer ovako čemo ti teško pomoći. Master detail relacije datasetova i to je sve šta ti treba ako sam dobro shvatio.
[ popmilan76 @ 11.08.2016. 20:52 ] @
Evo ovako imam sledece:
detail band u kojoj su sledeci podaci radnik,telefon,telefon1
gde je kveri
SELECT Klijenti.SifraKlijenta, Klijenti.Naziv, Klijenti.Telefon, Klijenti.Telefon1, Promet.Mesec, Promet.Godina
FROM Klijenti INNER JOIN Promet ON Klijenti.SifraKlijenta = Promet.KlijentiID
WHERE (((Promet.Mesec)<>0) AND ((Promet.Godina)<>0));
zatim imam
qrsubdetail gde je qrlabel4

i kveri ,koji je dataset

SELECT ZaNaplatu.SifraKlijenta, ZaNaplatu.Naziv, ZaNaplatu.Mesec, ZaNaplatu.Godina, ZaNaplatu.Telefon, ZaNaplatu.Telefon1
FROM ZaNaplatu LEFT JOIN Promet ON (ZaNaplatu.SifraKlijenta = Promet.KlijentiID) AND (ZaNaplatu.MeseciID = Promet.Mesec) AND (ZaNaplatu.Godina = Promet.Godina)
WHERE (((Promet.Mesec) Is Null) AND ((Promet.Godina) Is Null)) AND ZANAPLATU.SIFRAKLIJENTA =:SIFRAKLIJENTA
ORDER BY ZaNaplatu.SifraKlijenta, ZaNaplatu.Godina, ZaNaplatu.MeseciID;

i u eventu za qrsubdetail,i to u eventu before print ovaj kod


procedure TRepIzvestaj.QRSubDetail1BeforePrint(Sender: TQRCustomBand;
var PrintBand: Boolean);

begin

with neplaceno do
begin
Close;

Open;

First;
qrlabel4.Caption := '';

While not EOF do
begin

qrlabel4.Caption := qrlabel4.Caption + Fields[2].AsString + ' - ' + Fields[3].AsString + ' , ';

Next;

end;
end;
end;

end.


I to je to...



[ captPicard @ 11.08.2016. 21:20 ] @
Da li ti ne stigne do kraja reda ili možda ti ne vidiš da je sve uzeo u qrlabel samo se ne vidi? Jesi probao sa QRMemo?

Btw, ja bi to rješio kroz query, ima rješenja i u Accessu, makar koliko sam skužio nema gotove funkcije za to.

Pogledaj ovdje

I onda ti je dovoljan jedan DBEdit.
[ savkic @ 11.08.2016. 21:36 ] @
I problem je tačno šta?
Da li ti vidiš sve podatke koje trebaš?
Ne vidim da za neplaceno dataset igde upisuješ vrednost za SIFRAKLIJENTA.
[ popmilan76 @ 11.08.2016. 21:41 ] @
Problem je kada stigne do kraja reda,nema drugog reda...iako ima podataka za tog korisnika....stigne recimo do maja 2016,i dalje nema nista...iako u obicnoj tabeli ispisuje sve meseca....znaci u qreportu mi ispise jedno 5,6 meseci,i to je to,iako ima i po 15,16 meseci
[ captPicard @ 11.08.2016. 21:41 ] @
Citat:
savkic:
Ne vidim da za neplaceno dataset igde upisuješ vrednost za SIFRAKLIJENTA.


Ako su datasetovi povezani preko datasourcea onda ne mora upisivati vrijednost, nego dobije taj parametar iz master dataseta.

Ali da budem iskren, ne razumijem niti ja gdje je točno problem.
[ captPicard @ 11.08.2016. 21:45 ] @
Citat:
popmilan76:
Problem je kada stigne do kraja reda,nema drugog reda...iako ima podataka za tog korisnika....stigne recimo do maja 2016,i dalje nema nista...iako u obicnoj tabeli ispisuje sve meseca....znaci u qreportu mi ispise jedno 5,6 meseci,i to je to,iako ima i po 15,16 meseci


Jesi probao staviti qrmemo? Ako već forsiraš qrlabel, možda možeš i sa njim ali trebaš ga postavit da ide u više redova (ako uopće može qrlabel). Ukratko, nije tebi problem da nema drugog reda nego ti ne vidiš da je on sve ispisao jer ti nije sve stalo u tvoj qrlabel.
[ popmilan76 @ 11.08.2016. 22:18 ] @
Nisam probao staviti qrmemo,jer mi je bas zgodno sa labelom,ali mislim da nece ni sa qrmemo....cak mi onaj poslednji u redu,nije stao ceo mesec,vec pise samo dec,kao decembar 2016
[ savkic @ 11.08.2016. 22:25 ] @
Vrlo je lako probati da li je problem u komponenti (label ili memo) ili ne dobijaš sve podatke (problem u datasetu).
Uz red:
qrlabel4.Caption := qrlabel4.Caption + Fields[2].AsString + ' - ' + Fields[3].AsString + ' , ';
dodaj i
ShowMessage(Fields[2].AsString + ' - ' + Fields[3].AsString);

Pusti izvestaj, sacekaj da se sve izvrti i videces da li dobijas sve podatke u kom slucaju je problem u prikazu (ili neodgovarajuca label komponenta ili nepodesena) ili ako ne dobijas sve podatke onda je problem u datasetu.

Dakle, kad imas ovakve probleme, krenes sa sto jednostavnijim testovima dok ne otkriješ gde je problem i dalje rešavaš.
[ popmilan76 @ 11.08.2016. 22:47 ] @
Da,ali nijedan od ovih eventova u qreportu,ne podrzava komandu showmessage...
[ popmilan76 @ 11.08.2016. 22:55 ] @
Stavio sam ovu komandu showmessage pre nego sto prikaze preview,i izlista mi sve mesece,i posle prikaze na preview samo prvi red....
[ captPicard @ 12.08.2016. 07:22 ] @
Pa to ti cijelo vrijeme govorim, nije ti dobro podešen qrlabel. On po defaultu ne ide u drugi red (a nisam siguran, možda niti ne može). I treba provjeriti width, autosize itd... Zato sam ti i rekao da koristiš qrmemo i podesiš ga da se širi po dužini i visini kako ti odgovara.
[ popmilan76 @ 12.08.2016. 08:09 ] @
Ako postavim qrmemo,probao sam ga ,i rasirim duz celog banda,prikazuje sve podatke,ali jedno ispod drugog,nece jedno za drugim...iste properties ima kao i label...
[ captPicard @ 12.08.2016. 12:34 ] @
Pa kako punos memo?
[ captPicard @ 12.08.2016. 12:48 ] @
U qrmemo dodajes linije, tako da moras ili prvo staviti sve u varijablu pa dodati line ili kroz sql dobiti listu sa rezultatom pa dodati line. Prva solucija ti je laksa.
[ popmilan76 @ 12.08.2016. 14:12 ] @
idem ovako qrmemo1.lines.add(query1sifra1 + '' + query1sifra1),jel to treba nekako drugacije ili...
[ captPicard @ 12.08.2016. 14:16 ] @
To bi ti trebalo raditi ok. Daj sliku kako ispadne
[ popmilan76 @ 12.08.2016. 14:32 ] @
Ovako ispadne.....
[ popmilan76 @ 12.08.2016. 14:38 ] @
A ovako sa qrlabelom...
[ captPicard @ 12.08.2016. 16:10 ] @
Probaj ovo, makar mi je čudno da ti ovo šta si napisao radi novi red.

Code (delphi):
QRMemo1.Clear;

While not EOF do
begin

strTempMemo := strTempMemo + Fields[2].AsString + ' - ' + Fields[3].AsString + ' , ';

Next;
end;

QRMemo1.Lines.Add(strTempMemo);
[ captPicard @ 12.08.2016. 16:11 ] @
A ako hoćeš qrlabel probaj stavit autosize na false i autostretch na true.
[ popmilan76 @ 12.08.2016. 16:23 ] @
Probao sam sve kombinacije sa autostrech i autosize....nista nece...
[ popmilan76 @ 12.08.2016. 16:27 ] @
Hoce ovaj tvoj kod,lepo prikazuje.....sada necu ni pokusavati qrlabel,mozda ce i tamo hteti...Pozdrav i hvala....