AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Werkzeuge FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

Ein Thema von DeddyH · begonnen am 2. Mai 2012 · letzter Beitrag vom 3. Mai 2012
Antwort Antwort
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#1

FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 2. Mai 2012, 09:54
Ich beiße mir gerade an folgendem Problem die Zähne aus: ich habe 2 Master-Detail-Beziehungen (also Detail -> Master -> Master). Nun möchte ich lediglich die unterschiedlichen Daten des "Master-Masters" auflisten. Da ich lediglich die Enduser-Variante vor mir habe und die Report-Enginge modifiziert wurde, scheidet eine Lösung mit einer eigenen Query etc. leider aus. Für den Fall, dass ich mich holprig ausgedrückt haben sollte, hier mal ein Beispiel.
Daten:
Code:
Zahl | Master-Bezeichnung | Master-Master-Bezeichnung
 3,5   Apfel                Obst
 2,3   Tomate               Gemüse
 1,7   Birne                Obst
 0,3   Banane               Obst
 8,9   Gurke                Gemüse
Und die gewünschte Darstellung:
Code:
Gesamt: 16,4
Arten:
  Obst
  Gemüse
Ich habe ja erst gedacht, das sei mit einer "Pseudo-Gruppierung" zu tricksen, aber da bekomme ich je nach zugewiesener Datenquelle entweder alle Bezeichnungen oder nur eine.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 2. Mai 2012, 10:36
Ich kenne die eingeschränkte Version nicht, ich nehme an Variablen gibt es auch nicht.
Wenn Du 2 Masterbänder auf das identische Dataset verwendest, im ersten nur die Summen anzeigst, die Details ausblendes und im zweiten nur die Gruppen anzeigst und die Details ausblendest, aber vielleicht habe ich die Aufgabe auch falsch verstanden ....
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 2. Mai 2012, 13:49
Die Aufgabe lautet grob: wie setzte ich so etwas
SQL-Code:
SELECT
  DISTINCT S.Titel, S.Wert
FROM
  Detailtabelle D
JOIN
  Master1 M ON M.ID = D.M_ID
JOIN
  Master2 S ON S.ID = M.S_ID
WHERE
  Bedingung
ORDER BY
  S.Titel
in FastReport um? Alle meine Versuche mit Gruppierung (und ggf. Untergruppierung) waren nicht von Erfolg gekrönt. Das hat jetzt mit den Summen nichts zu tun, ich würde zur Not auch auf einen Unterreport mit Child-Band ausweichen, aber dazu brauche ich erst einmal die Daten.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Iwo Asnet

Registriert seit: 11. Jun 2011
313 Beiträge
 
#4

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 2. Mai 2012, 15:59
Ich hab die Aufgabe bestimmt mißverstanden:

Ich hab mir ein Dataset gebaut, analog zu deinem Beispiel, schmeiss einen GroupHeader rauf (condition = "frxDBDataset1."MM"), wobei "MM" für das Master-Master-Feld "Obst/Gemüse" steht.
Darunter ein Master-Databand (Dataset= frxDBDataset1), und zwar weil der GroupHeader das so will, fertig.
Ich bekomme zwei Zeilen "Obst" und "Gemüse"
Allerdings ist mein Dataset (die Quelle) nach dem Feld "MM" sortiert.

Und die Summe (16,3) bekomm ich auf die Schnelle nicht hin, muss aber nun auch weg. Geht aber bestimmt irgendwie

Vielleicht hilfts.

EDIT: Dein SQL-Beispiel deckt sich nicht mit deiner gewünschten Ausgabe im 1.Post...

Hast Du drei Tabellen oder eine?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 2. Mai 2012, 16:20
Also ich sehe hier nichts wofür man "DISTINCT" benötigen würde sondern das Problem lässt sich mit einem GROUP BY lösen:
SQL-Code:
SELECT SUM(D.Zahl) AS Summe, M.MasterMasterID FROM DetailTabelle D INNER JOIN Master M ON D.MasterID = M.MasterID
GROUP BY M.MasterMasterID
Das Ergebnis sieht so aus:
Code:
Summe  | MasterMasterID
==================
x,xx   | Gemüse
y,yy   | Obst
======
16,4 (== Gesamt)
Die Frage ist nun, ob man das ohne Hilfe von SQL hinbekommt.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 2. Mai 2012, 17:58
Vergesst die Summe einfach, die kommt auf ein anderes Band. Es handelt sich um insgesamt 3 miteinander verknüpfte Tabellen, und ich habe es heute in 7 Stunden nicht hinbekommen, die Detailsätze so zu listen, wie ich es brauche
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 3. Mai 2012, 06:37
Da es mit Fastreport grundsätzlich geht (siehe Iwo Asnet's Post), würde ich Lookupfelder (MasterMaster) in die Detail-Tabelle einfügen und dann seine Tipp verwenden.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 3. Mai 2012, 07:22
Ich kann auf die Daten keinen Einfluss nehmen. Auch in der Sortierung bin ich leider eingeschränkt, sonst wäre das Problem längst gelöst: ich kann jede beteiligte Tabelle einzeln sortieren, nicht aber die Gesamtmenge der zusammengejointen. Das ist auch der Grund dafür, dass die benötigten Daten dann eben mehrfach erscheinen. Ich werde noch in einem letzten verzweifelten Versuch probieren, irgendwie ein eigenes Dataset da "hineinzuschummeln", wenn das nicht geht, dann lasse ich es halt und steige auf eine äußerst unsaubere Variante um (interne Stringliste, die dann zum Schluss in einem Memo ausgegeben wird).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 3. Mai 2012, 07:36
Guten MOrgen,
naja, aus den Daten lässt sich halt nicht bel. was schustern.... hast Du Zugriff auf das Scripting im Fastreport? Wenn ja dann könntest Du den Report selbst erstellen (Page.OnManualBuild), dann kannst Du die Daten einzeln durchgehen, die nach deinen Wünschen gruppieren und das Ergebnis letzendlich per Hand auf dein Masterband malen. Eine andere Möglichkeit kenne ich nicht.

GRüße
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: FastReport - wie eine DISTINCT-Abfrage ohne SQL hinbekommen?

  Alt 3. Mai 2012, 07:40
Danke für den Tipp, ich fuchs mich mal da rein. Dummerweise ist der Report recht umfangreich mit unterschiedlichen Datenquellen, aber der Zweck heiligt ja die Mittel und somit den Aufwand

[edit] Ich habe das Problem (wenn auch unsauber) lösen können, indem ich die benötigten Daten in eine Stringliste schreibe. Das dauert zwar ein wenig, da ich immer erst nachsehen muss, ob der Datensatz schon vorhanden ist, aber da dieser Report nur einmal jährlich erzeugt werden soll, kann ich damit leben. [/edit]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH ( 3. Mai 2012 um 18:16 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:23 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