Avatar billede whynot Nybegynder
20. januar 2004 - 20:05 Der er 8 kommentarer og
1 løsning

quickreport - delphi7

Jeg sidder fast med et quickreport problem og jeg tænkte på om nogle havde et løsningsforslag.

jeg skal udskrive en liste ud fordelt på kunder.. dvs. hvilke ordre er bestilt af den enkelte kunde.


lidt sådan her..


Kundenavn1
adr1
post1 by1

ordre 1
ordre 2



Kundenavn2
adr2
post2 by2

ordre 3
ordre 4
ordre 7
ordre 8


kundenavn3
adr3
post3 by3

ordre 5
ordre 6


...osv osv osv..

der er altså tale om en to sql-statements..eller hvad?

Qreport i delphi har det jo sådan at den kun kan tilgå én query.. jeg har en idé om at jeg skal bruge expressions som er med i qreport - men jeg kan ikke finde en dokumentation som forklarer mig hvordan jeg knytter to sql-statements sammen i den samme quickreport.

...er der nogen som kan give mig et svar ville det være rart.

Jeg er ved at være lidt desperat, så jeg giver mange point for et guf-guf svar, som kan bruges uden alt for mange problemer ;)
Avatar billede pellelil Nybegynder
21. januar 2004 - 08:07 #1
Din Kunde-Query er masteren, og din Ordre-Query er detail til Kunde-Query'en. Så vidt jeg husker skal du bare knytte detail-queryen til et "Sub-Band" (jeg har ikke lige QuickReport ved hånden).
Avatar billede whynot Nybegynder
21. januar 2004 - 08:47 #2
Det lyder rigtigt!

...men hvordan tilknytter jeg den extra query til sub-band?.. hedder den i øvrigt ikke child?


Anyway.. jeg bruger følgende sql-statement:
SELECT ordre.nr, kunde.navn, kunde.adr, kunde.postnr, kunde.by FROM ordre, kunde WHERE ordre.k_nr = kunde.indeks ORDER BY kunde.navn, ordre.nr

...er det en rigtig antagelse at denne sql-statement er det som qreport forventer når man deler oplysningerne op i parent og child bands?
..fordi det ser ikke rigtigt ud det som kommer frem på skærmen ;)
Avatar billede pellelil Nybegynder
21. januar 2004 - 08:53 #3
Jo, den hedder sgu nok child når det kommer til stykket.

Du skal lave 2 queery's. Den første selecter de felter du skal bruge fra din kunde-tabel. Den anden selecter de felter du skal bruge fra din ordre table, men denne query skal "linkes-sammem med" din master-query (som man normalt "linker" en detail til en master).
Avatar billede whynot Nybegynder
21. januar 2004 - 12:09 #4
jamen hvordan gør man det?.. hvordan linker man en detail til en master?
Avatar billede whynot Nybegynder
21. januar 2004 - 12:09 #5
Er der tale om en innerjoin sql statement?
Avatar billede whynot Nybegynder
21. januar 2004 - 12:40 #6
jeg tror faktisk at jeg har fundet svaret.. men nu har jeg problemer med at lægge priser sammen. Så man får en total sum nederst på kunde-ordre listen for den enkelte kunde..

Jeg bruger QRexpr og fyrer denne her af: SUM(ordretabel.pris)  men den giver en 0 som resultat og den bliver slet ikke vist på printet.?!?

Hvad gør jeg forkert.!

iøvrig fandt jeg ud af at man skal gøre tingene i den HELT RIGTIGE RÆKKEFØLGE for at få qreport til at fungere ordenligt.. det kan anbefales at man henter følgende dokument ned fra http://www.qusoft.com -> QR3TUTORIAL.ZIP  og følger den trin for trin.. ikke noget med at springe noget over så virker skidtet ikke.

...jeg har kun fået det til at virke med TTable og ikke queries!..
Avatar billede pellelil Nybegynder
21. januar 2004 - 12:47 #7
Slet ikke noget med inner eller outer-join her. Det kommer helt an på hvilken database du bruger (med andre ord: hvilke komponenter du bruger). Din master query er helt normal (selecter kun fra din kunde tabel), og den detail skal "linkes sammen med" masteren. Nedenstående er fra Google (søgt på: "tquery master detail"):

<SNIP>
>I can create a Master/Detail relation with the MasterSource and MasterField
>properties of the TTable component. How can I do it with a TQuery component?

First, add a parameter to the SQL statement in the Detail TQuery. The
parameter should have the same name as the field in the Master TQuery that
is used to associate (link) the records between the two query components.
For example, the sample Paradox tables Customer (as Master) and Orders (as
Detail) have the field CustNo in common and on which their relation is
based. So the SQL statement for the Detail TQuery would look like this:

  SELECT *
  FROM Orders O
  WHERE O.CustNo = :CustNo

The second step is to set the DataSource property of the TQuery to point to
the TDataSource component used to display the Master TQuery data. For
example, if the Master TQuery is Query1 and its data is displayed in
data-aware controls using DataSource1, you would set the DataSource
property of Query2 (the Detail TQuery) to DataSource1. The data from Query2
could still be displayed through data-ware controls using a different
TDataSource.
</SNIP>
Avatar billede whynot Nybegynder
22. januar 2004 - 10:58 #8
ja.. nu virker det - men ikke med tables.. jeg kan simpelthen ikke få queries til at virke.. Men det er også okey.

Du får points.!
Avatar billede pellelil Nybegynder
22. januar 2004 - 12:14 #9
Jeg bruger selv nogle komponenter til InterBase der hedder IBO og det er desværre for lang tid siden jeg har rodet med std. TQuery's, men det burde nu nok kunne lade sig gøre.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester