2 tábla egyszerre quickreportal
2005-05-05T13:15:46+02:00
2005-05-06T13:39:37+02:00
2022-07-22T11:06:29+02:00
thc21
A problámám a következő lenne ki szeretném nyomtatni egy iskola osztályait. Ehhez 2 tábla adatai kellenek

Először jönnek az osztaly talából az osztály adatai, majd ezután az osztályhoz tartozó diákok akik a diákok táblában vannak és egy o_kod mezővel tudom eldönteni, hogy melyxik diák melyik osztályba tartozik

Úgy szeretném megoldani hogy először kiírja az osztály adatait, majd az osztály tanulóit, majd ezt folytatja amig van osztály

Magyarul az összes osztály-t ki szeretném noymtatni a hozzá tartozó diákokkal

A problémám: Egyszerűen sehogy sem tudom megoldani, hogy úgy mozogjon, hogy egyet lép az osztály tábla utánna a a hozzátartozó összes diák majd még egyetlép az osztály tábla és az ehhez tartozó diákok.

Addig jutottam hogy kíírja az osztályokat, de sajna a diákok mindig ugyanazok minden osztálynál

Előre is köszönöm. Remélem nem kavarottam bele nagyon a magyarázásba
Mutasd a teljes hozzászólást!
Annak nem is lehet, de nem is kell.
Elölről:

Van a reportodon egy QRGroup1 és egy DetailBand1. A QRGroup1 végzi a csoportosítást, a DetailBand1-en lesznek a tanulók adatai (osztályonként csoportosítva). A QRGroup1-re tegyél egy QRDBText1-et, ebben lesz kiírva az osztály jele. A DetailBand1-re tegyél egy QRDBText2-t, ebben lesznek kiírva az osztályhoz tartozó tanulók.
QuickRep1.DataSet := Query1; QRGroup1.Master := QuickRep1; QRGroup1.Expression := Query1.oszt_betujel; // GroupHeader // osztályok kiírása QRDBText1.DataSet := Query1; QRDBText1.DataField := Query1.oszt_betujel; // osztály tanulóinak kiírása QRDBText2.DataSet := Query1; QRDBText2.DataField := Query1.nev; // tanuló neve
Mutasd a teljes hozzászólást!

  • Egy TQuery-ben:

    SELECT osztaly.nev,diak.nev FROM osztaly,diak WHERE diak.o_kod = osztaly.o_kod ORDER BY osztaly.nev,diak.nev;

    Ez lesz a report-od DataSource-ja. Felrakod a kívánt mezőket, plusz egy GroupHeader-t. Ennek a kifejezésében az osztaly.nev mezőt adod meg, a detail-ben pedig pl. egy DBText-en a diak.nev mezőt. Ez osztályonként, névsor szerint fogja nyomtatni a nebulókat.

    Üdv
    TommySoft
    Mutasd a teljes hozzászólást!
  • Ezt alkottam a qerybe:

    SELECT * FROM osztaly,diakok
    WHERE diakok.osztaly_id = osztaly.o_kod and diakok.torolve=false and osztaly.torolve=false

    Az igazítás nem számít, az viszont gebasz, ha beleteszem egy detailbe az általam megjelenítendő mezőket akkor duplán írja ki

    A where-el is van valami rendellenesség a törölt elemeket is kiírja
    Mutasd a teljes hozzászólást!
  • Helló!

    Ha osztályonként akarod kiíratni a diákokat, akkor mindenképpen kell az ORDER BY!!! A logikai dolog NOT-al kérdezd le.
    Mutasd a teljes hozzászólást!
  • Valljuk be férfiasan eltévedtam, de most már az út végét se látom. Hogy is van ez helyesen ha meg probálom az order by-t belearkani vmi típus híbát ír: field in order by must be a result set

    Ezt erre kaptam
    SELECT * FROM osztaly,diakok
    WHERE diakok.osztaly_id = osztaly.o_kod and diakok.torolve=False and osztaly.torolve=False
    ORDER bY diakok.nev
    Mutasd a teljes hozzászólást!
  • Több táblás ORDER BY esetén nem használhatsz SELECT * -ot.

    SELECT osztaly.nev, diak.nev, ... ORDER BY osztaly.nev, diak.nev

    Az osztályra is rendezned kell, mert arra fogsz csoportosítani (GroupHeader)!!!

    A logikai feltételt mégse próbáld NOT-al, úgy jó ahogy írtad.
    Mutasd a teljes hozzászólást!
  • Na msot már vagy 70%os:

    SELECT diakok.név,osztaly.oszt_betujel FROM osztaly,diakok
    WHERE diakok.osztaly_id = osztaly.o_kod and diakok.torolve=False and osztaly.torolve=False
    ORDER bY osztaly.oszt_betujel ,diakok.név


    Felraktam a GroupHeadert az Expression-be beírtam az osztaly.oszt_betujel, ide raktam egy dbtextet, aminek a datasetje a query1 és a mezője az osztaly.oszt_betujel-et állítottam /1 db osztalyt jelenit meg/

    Aztan alatta van egy detail amire felraktam dbtextet dataseje query1 field a diakok.nev mezője /Erre ez kiír minden diákok aki csak van/
    Hol van a detailnek expressionje én nem találom vagy ne dbtextet hanem expr-t tegyek fel (ezt is feltettem de igy meg nem találta a mezőt)

    Nyugtáznom kell, hogy igen értetlen vagyok
    Mutasd a teljes hozzászólást!
  • Halihó!

    Magának a QuickReport-nak is beállítottad a DataSet-et Query1-re? Nálam müxik...
    Mutasd a teljes hozzászólást!
  • bew van állítva csaka detail ill. a dbtexteknek nem tudok expression-t beállítani.Szerintem
    Mutasd a teljes hozzászólást!
  • Annak nem is lehet, de nem is kell.
    Elölről:

    Van a reportodon egy QRGroup1 és egy DetailBand1. A QRGroup1 végzi a csoportosítást, a DetailBand1-en lesznek a tanulók adatai (osztályonként csoportosítva). A QRGroup1-re tegyél egy QRDBText1-et, ebben lesz kiírva az osztály jele. A DetailBand1-re tegyél egy QRDBText2-t, ebben lesznek kiírva az osztályhoz tartozó tanulók.
    QuickRep1.DataSet := Query1; QRGroup1.Master := QuickRep1; QRGroup1.Expression := Query1.oszt_betujel; // GroupHeader // osztályok kiírása QRDBText1.DataSet := Query1; QRDBText1.DataField := Query1.oszt_betujel; // osztály tanulóinak kiírása QRDBText2.DataSet := Query1; QRDBText2.DataField := Query1.nev; // tanuló neve
    Mutasd a teljes hozzászólást!
  • Köcc teljes jó. már csak a Query-ben a törölteket nem kellene kiíratnom. De az 50 pont jár. Bocs hogy értetlenkedtem, és kösz a segítséget +1x
    Mutasd a teljes hozzászólást!
  • Helló!

    Biztos, hogy logikai a TOROLT meződ? Én az ilyeneket 0/1-el szoktam tárolni és úgy is kérdezem le...

    Üdv
    TommySoft
    Mutasd a teljes hozzászólást!
  • Az biztos hogy logical vmiért nem eszi na de majd megoldom
    Mutasd a teljes hozzászólást!
  • Valami még eszembe jutott...

    WHERE diakok.osztaly_id = osztaly.o_kod and diakok.torolve=False and osztaly.torolve=False


    Valszeg azért hozza, mert ÉS kapcsolatban van az osztaly.torolt és diakok.torolt. Tehát: ha van egy diákod, aki törölt, de olyan osztályhoz van rendelve, amelyik nem törölt, akkor az ÉS kapcsolat miatt belehozza a listába! A másik oldalt fel sem tételezem: hogy olyan osztályhoz van nem törölt diák rendelve, amelyik osztály törölt!!!!
    Mutasd a teljes hozzászólást!
  • ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ!!!!!
    Ezt el se olvasd!!! Már elküldtem, mikor rájöttem, hogy hüjjjjjeséget írtam!
    1000 bocs.
    Mutasd a teljes hozzászólást!
  • Van valmi köze az sql lekérdezésnek éa a delphi táblán lévő filternek. Tudtommal nincs mert az sql közvetve a táblából szedi az adatokat. De ha lenne akkor meg lehet a bibi a logikai típusoknál
    Mutasd a teljes hozzászólást!
abcd