AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Filtern von 3 Tabellen für Report
Thema durchsuchen
Ansicht
Themen-Optionen

Filtern von 3 Tabellen für Report

Ein Thema von erich.wanker · begonnen am 14. Dez 2018 · letzter Beitrag vom 14. Dez 2018
Antwort Antwort
Benutzerbild von erich.wanker
erich.wanker

Registriert seit: 31. Jan 2008
Ort: im schönen Salzburger Land
454 Beiträge
 
Delphi XE4 Professional
 
#1

Filtern von 3 Tabellen für Report

  Alt 14. Dez 2018, 12:29
Datenbank: Firebird • Version: 2.5 • Zugriff über: ZeosLib
Hallo, ich werd noch wahnsinnig ..

ich muss für einen Report 3 Tabellen filtern:

Betroffene Personen -> die Verträge der Person - die Leistungen lt. Vertrag

Wenn ich DBGrids auf die 3 Tabellen hänge funktioniert alles einwandfrei,
WENN DER REPORT DIE DATEN DRUCKT kommen nach Seitenwechsel Datensätze doppelt oder mehrfach


Drucken will ich:
************************************************** *****************
customer 1
____________contract A
_______________Produkt 1 from Contract A of customer 1
_______________Produkt 2 from Contract A of customer 1
____________contract B
_______________Produkt 1 from Contract B of customer 1
_______________Produkt 2 from Contract B of customer 1
customer 2
____________contract A
_______________Produkt 1 from Contract A of customer 2
_______________Produkt 2 from Contract A of customer 2

************************************************** *****************
die Personen Tabelle wird gefilter mit "Select * from Personen where INR in (-1,155,24,656,...)
Person-TZquery "onDataChange" filtert Verträge "Select * from Vertrag where INR in (-1,155,24,656,...)
Verträge-Tzquery "onDataChange" filtert Leistungen (weiter unten ist ein Auschnitt der Procedure)

Wenn ich 3 DBGrids auf die 3 TDataSource verbinde und in den dbGrids rumklicke funktioniert alles einwandfrei


Eigentlich total einfach .. ABER:

Der eingesetzte Reportdesigner (Reportbuilder 19) zickt mächtig rum - und druckt Leistungen des Vertrags mehrfach bei Seitenwechsel (teilweise endlos-loop) -Infos vom Hersteller: http://rbwiki.digital-metaphors.com/...g-sql-queries/

Jetzt habe ich herausgefunden:



Wenn ich die Leistungen wie folgt filtere FUNKTIONIERT DER REPORT NICHT RICHTIG
Delphi-Quellcode:
procedure TF_DRUCK.dxdruck_vertragDataChange(Sender: TObject; Field: TField);
...
  if UniMainModule.fakturierungs_umfang <> 'ENTSCHAEDIGUNGthen
  begin
    xdruck_entsch.SQL.Clear;
    xdruck_entsch.SQL.Append('SELECT * FROM ANTEILE WHERE ANTEILE.FAKTURIERUNG_MONAT = ' + #39 + kunden_fakturieren.fakturierungsmonat + #39 + ' AND ANTEILE.VERTRAG_NR = :INR AND ANTEILE.MANDANT_INR = ' + inttostr(UniMainModule.aktueller_mandant_nummer) + ' AND ANTEILE.GUNST_INR = ' + s + ' ORDER BY ANTEILE.VERTRAG_NR desc ');
    xdruck_entsch.Open;
  end;

  if UniMainModule.fakturierungs_umfang = 'ENTSCHAEDIGUNGthen
  begin
    xdruck_entsch.SQL.Clear;
    xdruck_entsch.SQL.Append(UniMainModule.markierte_anteile + ' AND ANTEILE.MANDANT_INR = ' + inttostr(UniMainModule.aktueller_mandant_nummer) + ' AND ANTEILE.VERTRAG_NR = :INR ORDER BY ANTEILE.VERTRAG_NR desc');
    xdruck_entsch.Open;
  end;
...
Zitat:
Erklärung: User hat manuell was ausgewählt:= UniMainModule.fakturierungs_umfang = 'ENTSCHAEDIGUNG'
ansonsten alle zum Vertrag gehörenden Leistungen drucken
Zitat:
Erklärung: der String "UniMainModule.markierte_anteile" wird verwendet, wenn der User nur markierte Leistungen drucken will - dann schaut der zusammengesetzte String so aus:
"SELECT * FROM ANTEILE WHERE INR IN (-1,331413,331186,331179,331174,331171,331176)"




Wenn ich das "procedure TF_DRUCK.dxdruck_vertragDataChange" deaktiviere und ZUR DESIGZEIT folgendes unter Eigenschaften bei xdruck_entsch mache FUNKTIONIERT DER REPORT RICHTIG
Delphi-Quellcode:
xdruck_entsch.MasterSource = dxdruck_vertrag
xdruck_entsch.SQL = SELECT * FROM ANTEILE WHERE ANTEILE.VERTRAG_NR = :INR




ABER: Eine einfache " where Nummer = Nummer aus Mastertabelle" hilft mir nicht..

Wie bitte soll ich die Funktionalität von procedure TF_DRUCK.dxdruck_vertragDataChange in Parameter verpacken ?

Hat jemand eine Idee?

Vielen Dank
Erich
Erich Wanker - for life:=1971 to lebensende do begin ..
O
/H\
/ \

Geändert von erich.wanker (14. Dez 2018 um 12:35 Uhr)
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.174 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Filtern von 3 Tabellen für Report

  Alt 14. Dez 2018, 15:02
Du solltest verstehen, wie im RB master-Detail Reports funktionieren. Dann klappt das.

Das Problem hier ist, dass der Report mit den DataSets mehr macht, als das Grid + offensichtlich spießt sich da was mit dem Filtern in den Events. Außerdem würde ich gscheite Master/Detail Realationen aufsetzen, der OnDataChangeEvent ist da nicht so super geeignet.

Welches Grid verwendst du denn? Und welche DB/Query?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz