Seite 1 von 1

[gelöst] Berechnungen im Bericht

Verfasst: Mo 25. Jul 2022, 17:13
von NF-Albrecht
Ich verwalte einen Verein und habe eine Base Tabelle erstellt mit allen Daten der Mitglieder.
In einer Abfrage habe ich das Alter der Mitglieder ermittelt, dieses wird auch im Bericht angezeigt.
Nun möchte ich im Berichtsfuß das Durchschnittsalter berechnen. Das bekomme ich nicht hin.
Im Berichtsfuß habe ich den "ZählerBericht" eingebaut. Wenn ich die Summe des Alters über den
Bericht bilde und durch den "ZählerBericht" teile, kommt kein Ergebnis. Wie muss ich das denn formulieren,
dass das klappt?

Gruß

NF-Albrecht

Re: Berechnungen im Bericht

Verfasst: Di 26. Jul 2022, 08:07
von RobertG
Alles was Du vor Ausführung des Berichtes in einer Abfrage/Ansicht erledigen kannst erledige dort. Das bedeutet: Alter aufsummieren und durch die Anzahl teilen ist besser etwas für die Abfrage als für die Formeln im Bericht.

Wenn beide einzelnen Inhalte wie [SummeAlter] und [Zähler] bei Dir im Berichtsfuß erscheinen, dann müsste über den Formeleditor auch die Rechnung [SummeAlter]/[Zähler] möglich sein. Ohne ein entsprechendes Beispiel ist das schlecht zu sagen.

Re: Berechnungen im Bericht

Verfasst: Di 26. Jul 2022, 10:12
von NF-Albrecht
Hallo RobertG,

vielen Dank, leider habe ich nicht so eine große Erfahrung mit Funktionen in der Abfrage. Ich habe folgendes gemacht:

SELECT COUNT( "Nachname" ), "Vorname", "Geburtstag", "Eintritt", SUM( DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ) ) AS "Alter" FROM "Adressenliste" WHERE "Eintritt" IS NOT NULL AND "Gast" IS NULL AND "ausgetreten" IS NULL AND "verstorben" IS NULL ORDER BY COUNT( "Nachname" ) ASC, "Vorname" ASC

aber das funktioniert nicht.
Kannst Du mir sagen, was verkehrt ist?

Vielen Dank

Re: Berechnungen im Bericht

Verfasst: Di 26. Jul 2022, 12:32
von RobertG
Hallo NF-Albrecht,

Du hast in der Abfrage Funktionen und einzelne Felder gemischt. Die Felder, die Du nicht mit einer Funktion versiehst, müssten aber gruppiert werden.

Code: Alles auswählen

SELECT "Nachname", "Vorname", "Geburtstag", "Eintritt", DATEDIFF( 'yy', "Geburtstag", CURDATE( ) )  AS "Alter" 
FROM "Adressenliste" 
WHERE "Eintritt" IS NOT NULL AND "Gast" IS NULL AND "ausgetreten" IS NULL AND "verstorben" IS NULL 
ORDER BY "Nachname" ASC, "Vorname" ASC
Dies ist Deine ursprüngliche Abfrage. Ich gehe einmal, wie Du, davon aus, dass "Nachname" nie leer ist, ebenso wenig der "Geburtstag".

Code: Alles auswählen

SELECT COUNT( "Nachname") 
FROM "Adressenliste" 
WHERE "Eintritt" IS NOT NULL AND "Gast" IS NULL AND "ausgetreten" IS NULL AND "verstorben" IS NULL
Dies ergibt die Anzahl der Datensätze.

Code: Alles auswählen

SELECT SUM(DATEDIFF( 'yy', "Geburtstag", CURDATE( ) )) 
FROM "Adressenliste" 
WHERE "Eintritt" IS NOT NULL AND "Gast" IS NULL AND "ausgetreten" IS NULL AND "verstorben" IS NULL
Dies gibt die "Alterssumme"

Code: Alles auswählen

SELECT SUM(DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ))/COUNT( "Nachname") 
FROM "Adressenliste" 
WHERE "Eintritt" IS NOT NULL AND "Gast" IS NULL AND "ausgetreten" IS NULL AND "verstorben" IS NULL
Dies ist der Altersschnitt.

Code: Alles auswählen

SELECT "Nachname", "Vorname", "Geburtstag", "Eintritt", DATEDIFF( 'yy', "Geburtstag", CURDATE( ) )  AS "Alter",
(SELECT SUM(DATEDIFF( 'yy', "Geburtstag", CURDATE( ) ))/COUNT( "Nachname") 
  FROM "Adressenliste" 
  WHERE "Eintritt" IS NOT NULL AND "Gast" IS NULL AND "ausgetreten" IS NULL AND "verstorben" IS NULL) AS "Altersschnitt"
FROM "Adressenliste" 
WHERE "Eintritt" IS NOT NULL AND "Gast" IS NULL AND "ausgetreten" IS NULL AND "verstorben" IS NULL 
ORDER BY "Nachname" ASC, "Vorname" ASC
Und das ist der Altersschnitt in der ursprünglichen Abfrage - als Unterabfrage.

Du gehst beim Alter übrigens nicht vom tatsächlichen Alter sondern von dem Alter aus, das eine Person in dem betreffenden Jahr erreicht. Das ist beim Sport das normale Vorgehen um Altersklasse einzuteilen. Ich laufe in "M65" seit dem Jahr, in dem ich 65 Jahre alt geworden bin.

Gruß

Robert

Re: Berechnungen im Bericht

Verfasst: Di 26. Jul 2022, 14:04
von NF-Albrecht
Hallo RobertG,

das ist logisch und verstehe auch ich. Das bei mir ermittelte Alter reicht
für diese Aufgabe aus.
Vielen Dank für die Lösungsvorschläge, da kann ich mir ja das passende
aussuchen. Kann ich denn auch unterschiedliche Abfragen in einem Bericht
unterbringen? Ansonsten müßte ich das ja mit Unterabfragen, wie Du das im
letzten Ausdruck gemacht hast. Dann taucht der Altersschnitt bei jedem
Datensatz auf, den muss ich ja nicht in die Tabelle bringen, sondern nur als
Datenfeld im Berichtsfuß. Hab ich das so richtig verstanden?

Viele Grüße aus Nordfriesland von

NF-Albrecht

Re: Berechnungen im Bericht

Verfasst: Di 26. Jul 2022, 16:22
von RobertG
Hallo NF-Albrecht,

grundsätzlich gilt: ein Bericht - eine Datenquelle. Mit Ausnahme von Diagrammen ist keine weitere Dateneinbindung daneben möglich. Es gibt also nicht, wie bei Formularen, so etwas wie Unterformulare.

Ich packe für Berichte alles in eine Abfrage, lieber noch in eine Tabellenansicht (View). Da der berechnete Mittelwert ja überall gleich ist lasse ich den natürlich nicht in dem Bereich "Detail" erscheinen. Da stehen bei Dir die restlichen Daten für die einzelnen Personen. Der Mittelwert könnte also im Berichtsfuß oder im Berichtskopf stehen.

Gruß

Robert

Re: Berechnungen im Bericht

Verfasst: Di 26. Jul 2022, 16:43
von NF-Albrecht
Hallo Robert,

danke für Deine Hilfe, das war sehr informativ für mich.
Damit ist meine Frage voll und ganz beantwortet.
Jetzt noch eine Frage: Wo kann ich meinen Beitrag als "erledigt" kennzeichnen?

Gruß

Albrecht

Re: Berechnungen im Bericht

Verfasst: Di 26. Jul 2022, 18:17
von RobertG
Hallo Albrecht,

gehe in Deinen ersten Beitrag. Der wird ja in der Übersicht angezeigt. Dort schreibst Du dann in den Betreff am Anfang [gelöst] oder so ähnlich.

Gruß

Robert