Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Ich möchte nur einen Report!!! (https://www.delphipraxis.net/57201-ich-moechte-nur-einen-report.html)

ickehausen 17. Nov 2005 08:03

Datenbank: Interbase • Version: 6.0 • Zugriff über: IBX

Ich möchte nur einen Report!!!
 
Hallo zusammen,

mein Problem besteht darin, dass ich eine Tabelle mit Haushaltsstellen(HhST) habe und eine Haupttabelle, in der Einnahmen zu den HhSt stehen. Nun möchte ich die Einnahmen HhSt-weise zusammenaddieren und mein Report soll dann wie folgt aussehen:

HhST 1 enthält 100,00 Euro
HhSt 2 enthält 150,00 Euro
etc.


Im Moment habe ich nur eine Lösung, dass für jede HhSt ein Report gedruckt wird.

Delphi-Quellcode:
// Auszug mit etwas vereinfachter SQL-Abfrage

// Report ausführen
  DataModule2.IBTableHhst.First;
  While not DataModule2.IBTableHhst.Eof do begin
    HHSTNR := DataModule2.IBTableHhst.FieldByName('HHST').AsString;
    DataModule2.IBQueryMonatsabschluss.Active := false;
    DataModule2.IBQueryMonatsabschluss.SQL.Clear;
    DataModule2.IBQueryMonatsabschluss.SQL.Text := 'SELECT STRBETRAG FROM TMAIN WHERE HHST = ' + QuotedStr(HHSTNR);
    DataModule2.IBQueryMonatsabschluss.Active := true;
    DataModule2.RvProjectMonatsabschluss.ExecuteReport('Report1');
    DataModule2.IBTableHhst.Next;
  end;
Im Rave-Report werden dann die Beträge aus der Tabelle zusammenaddiert.

Kann mir jemand helfen?

Glühwürmchen 17. Nov 2005 08:40

Re: Ich möchte nur einen Report!!!
 
Ich verstehe nicht so recht, was Du hast und was Du willst.

Könntest Du mal ein Beispiel zusammenstellen, das zeigt, was in deinen beiden Tabellen drin ist, und wie es nachher aussehen soll?

ickehausen 17. Nov 2005 09:42

Re: Ich möchte nur einen Report!!!
 
Hallo Glühwürmchen,

in der Tabelle HHST habe ich die Spalten HHST und BEZEICHNUNG_DER_HHST. Als Daten sind dann z. B. enthalten :

HHST >>> BEZEICHNUNG_DER_HHST
1234 >>> Verwaltung
1236 >>> Kopierkosten
1258 >>> sonstige Umlagen

etc.

in der Tabelle MAIN habe ich die Spalten HHST (über die verknüpfe ich die Tabellen), BETRAG und USER (ist nur ein Auszug aus den Tabellen). Als Daten sind dann z. B. enthalten :


HHST >>> BETRAG >>> USER
1234 >>> 100,00 Euro >>> X
1236 >>> 050,00 Euro >>> Y
1234 >>> 010,00 Euro >>> Z
1258 >>> 020,00 Euro >>> X
1258 >>> 050,00 Euro >>> y

etc.

Bislang gehen ich jetzt angefangen bei der HHST 1234 die Tabelle MAIN durch, suche da die Beträge raus und addiere sie im Report.
Ich bekomme aber für jede HHST einen Report. Ich brauche aber einen Report, in dem steht HHST 1234 hat 110,00 Euro, HHST 1236 hat 50,00 Euro etc.

Ich hoffe ich, mein Problem ist verständlicher für Dich geworden?!

HendrikM 17. Nov 2005 09:48

Re: Ich möchte nur einen Report!!!
 
Also ich würde die Query wie folgt abändern:
'Select A.HHST, B.STRBETRAG from HhST A
join TMAIN B
on A.HHST=B.HHST'
und fertig. Dadurch ersparst Du Dir das Durchlaufen der HhST - Tabelle.
Hendrik

ickehausen 30. Nov 2005 10:58

Re: Ich möchte nur einen Report!!!
 
Hallo,

ich melde mich nach Krankheit wieder zurück. Danke Hendrik, ist eine Vereinfachung, aber sie löst mein Problem nicht ganz. Ich benötige Zwischensummen der einzelnen HHST und dies ist (zumindest mit meinen bescheidenen Verstand) nicht möglich?!

HendrikM 30. Nov 2005 11:03

Re: Ich möchte nur einen Report!!!
 
Hallo Sorry,
habe ein SUM vergessen
SQL-Code:
Select A.HHST, SUM(B.STRBETRAG) as STRBETRAG from HhST A
join TMAIN B
on A.HHST=B.HHST
so sollte es aber gehen.
Hendrik

HendrikM 30. Nov 2005 11:10

Re: Ich möchte nur einen Report!!!
 
noch was vergessen
SQL-Code:
Select A.HHST, SUM(B.STRBETRAG) as STRBETRAG from HhST A
join TMAIN B
on A.HHST=B.HHST
Group by A.HHST

ickehausen 30. Nov 2005 12:06

Re: Ich möchte nur einen Report!!!
 
Danke für Deine super schnelle Antwort Hendrik, bei mir verursacht die Änderung einen Dynamic SQL Error.
SQL error code = -104, invalid Column reference!

Meine Abfrage sieht so aus:
Delphi-Quellcode:
  // Query für Report und Report ausgeben
  DataModule2.IBQueryMonatsabschluss.Active := false;
  DataModule2.IBQueryMonatsabschluss.SQL.Clear;
  DataModule2.IBQueryMonatsabschluss.SQL.Text := 'select A.HHST, B.USERNAME, B.NAME, B.VERWENDUNG, B.Datum, SUM(B.SSTRBETRAG) as STRBETRAG from THHST A join TMAIN B on (A.HHST = B.HHST) and (B.DATUM >= ' + QuotedStr(DateMin) + ') and (B.DATUM < ' + QuotedStr(DateMax) + ') and (B.STORNO = ' + QuotedStr(Storn) + ') group by A.HHST';
  DataModule2.IBQueryMonatsabschluss.Active := true;
  DataModule2.RvProjectMonatsabschlussUser.ProjectFile := RepPath + '\' + RepMU;
  DataModule2.RvProjectMonatsabschlussUser.ExecuteReport('Report1');

HendrikM 30. Nov 2005 12:14

Re: Ich möchte nur einen Report!!!
 
Hallo, Dein jetziges select sieht ja auch ganz anders aus als Dein erstes!
Da war nur von HHST und der Summe von SSTRBetrag die Rede.
Wenn Du jetzt noch all die anderen Angaben drin haben willst, mußt Du diese auch in die Group BY
Klausel aufnehmen.
Also z.B.
SQL-Code:
...
Group by A.HHST, B.USERNAME, B.NAME, B.VERWENDUNG, B.Datum
Hendrik


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz