Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: gromax am Oktober 07, 2014, 15:06:53

Titel: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 07, 2014, 15:06:53
Hallo Access-Profis,

ich habe einen Bericht erstellt und in Analogie zu anderen Berichten eine Summe auszuweisen versucht; aber - es klappt nicht und ich weiß nicht, woran dieses liegen könnte. Seit Stunden operiere ich mit Formelneingaben (DomSumme - Summe - Anzahl - ....) und es kommt immer die falsche Zahl raus.

In der Anlage habe ich dieses Problem visualisiert.

Es wäre toll, wenn mich jemand unterstützen könnte?!

Viele Grüße
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: Jonny am Oktober 07, 2014, 15:37:20
Hallo Gromax,
mit deine Formel komme ich nicht klar.
Summe summiert immer Zahlen aber zählt nicht.
Ich denke du brauchst immer die Anzahl.

Gruß
Johann
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 07, 2014, 16:11:16
Hallo Johann,

ich habe die 'Anzahlen der Schüler' mit "=ANZAHL(SuS_Name)" innerhalb der Gruppierung "EIN_Name-Fußbereich" ermittelt und kann so pro Schule die Anzahlen ausweisen (vgl. Screenshot). Für die Gesamtmenge der Schüler insgesamt summiere ich diese Anzahlen - so habe ich gedacht.
Bei den Schülern funktioniert diese Dom-Funktion und ergibt 16 Schüler - korrekt; es würde auch die Formel =Anzahl(SuS_Name) funktionieren, so dass ich diese Dom-Funktion nicht brauche. Die Formel =Anzahl(EIN_Name) ergibt aber ebenso die 16 - was nicht korrekt ist, es müsste 12 ergeben.

Vielleicht steckt in der Logik der Denkfehler? Für mich ist das nicht nachvollziehbar!

Danke für die schnelle Antwort.

Viele Grüße
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: Jonny am Oktober 07, 2014, 16:33:36
Wo kommt Ein_Name her?
ist das eine seperate Tabelle oder die gleiche Tabelle wie SuS_Name?

Gruß
Johann
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 07, 2014, 16:43:04
Hallo Johann,

die dem Bericht zugrunde liegende Abfrage holt sich die Daten aus einer m:n-Tabelle, in der die Schüler (tbl_SCHUELER) den Schulen (tbl_EINRICHTUNGEN) zugeordnet werden. In beiden Grundtabellen gibt es jeweils ein Feld EIN_Name - der Schulname - bzw. ein Feld SuS_Name - Name des Schülers, die sich jeweils auch wieder in der Abfrage wiederfinden und entsprechend gezählt werden sollten.

Viele Grüße
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: Jonny am Oktober 07, 2014, 16:50:05
Hallo
schau mal in deine Abfrage. Da wirst du den Namen der Einrichtung genau so oft finden wie es Schüler gibt. Deshalb die 16.
Zähl doch mit DomAnzahl die Einrichtungen aus der Tabelle tbl_Einrichtungen.
Oder gibt es Einrichtungen ohne die nicht mitgezählt werden dürfen?
Gruß
Johann
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 07, 2014, 17:15:18
Hallo Johann,

das ist absolut korrekt!
Aber in dieser Abfrage sind im Moment 43 Schüler mit ihren Schulen aufgeführt. In dem besagten Bericht sind nur die Schüler (16 an der Zahl) aufgeführt, die in diesem Schuljahr noch zur Schule gehen; dies erzeuge ich durch ein berechnetes Feld in der Abfrage, nachdem dieser Bericht gefiltert wird.
Jetzt könnte ich ja trotzdem alle 16 Schüler mit ihren jeweiligen Schulen aufführen, wobei dann natürlich manche Schulen mehrfach aufgeführt werden; deshalb habe ich den Bericht bzgl. den Schulen (Feld 'EIN_Name') gruppiert und würde jetzt gerne im Berichtsfuß die Summen ausgeben: 12 Schulen mit insgesamt 16 Schülern.

Geht das denn, oder habe ich einen grundsätzlichen Denkfehler?

Vielen Dank für Deine Mühe
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: Jonny am Oktober 08, 2014, 11:29:52
Hallo
bei DomAnzahl gibt es auch eine WHERE Klausel.
Vieleicht kannst du diese nutzen.
Eine Alternative ist: Du machst eine Abfrage mit den Einrichtungen die gezählt werden sollen. Dann die DomAnzahl darauf.
Gruß
Johann
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 09, 2014, 22:24:56
Hallo Johann,

danke für Deine Unterstützung; ich habe Deinen Rat befolgt:
neue Abfrage:
qry_BEARBEITUNG_SCH_VER_EIN_Bericht_SchulbesuchTest

DomAnzahl:
=DomAnzahl("EIN_Name";"qry_BEARBEITUNG_SCH_VER_EIN_Bericht_SchulbesuchTest";"[Schuljahr1]= " & "'" & [Schuljahr1] & "'")

und wieder werden nicht die angezeigten 20 Schulen gezählt sondern die 28 Datensätze der Schüler; das Problem bleibt wohl dasselbe und damit die Fragestellung: Wie "zwinge" ich die Dom-Funktion nur die angezeigten, letztlich auch gruppierten Datensätze zu zählen?!

Das würde mich natürlich von der Sache her sehr interessieren, wiewohl ich mittlerweile eine Lösung gefunden habe:
Ich lassen mit den Textfeldern [=1] bei "laufender Summe" sowohl die Schüler als auch die Schulen zählen, den Detailbereich bzw. diese Zählfelder setze ich auf "unsichtbar" und verweise im Berichtsfuss mit '=[Textfeld]' auf das jerweilige Zählfeld.
Vom Ergebnis her erhalte ich die korrekten Summen - und auch noch sehr schnell, wissend, dass die Dom-Funktionen doch relativ langsam sind.
Wenn dies nach Deiner Begutachtung keine accessimmanente Fehler sind und Du dieses auch absegnen kannst, brauchen wir den Dom-Funktionen nicht hinterhergehen!

Danke trotzdem für Deine Hilfe
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: MaggieMay am Oktober 10, 2014, 11:36:33
Hallo,

wenn du bereits in der Abfrage nach Schule gruppierst und die Anzahl der Schüler ermittelst, kannst du im Bericht einerseits die Summe der Schülerzahl berechnen und die Anzahl der Schulen mit Anzahl(*) anzeigen.
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 11, 2014, 12:58:28
Hallo MaggieMay,

vielen Dank, dass Du Dich auch aufmachst, mir zu helfen - zum wiederholten Mal!
Deinen Rat habe ich umgesetzt und die DomFunktion im Berichtsfuß nun wie folgt formuliert:
=DomSumme("AnzahlvonEIN_Name";"qry_BEARBEITUNG_SCH_VER_EIN_Bericht_Schulbesuch";"[EIN_Name]='" & [EIN_Name] & "' AND [Schuljahr1]='" & [Schuljahr1] & "'").
Das ergibt letztlich 2 Schulen??

Die Formel =Anzahl([EIN_Name]) ergibt wieder analog zur Anzahl der Datensätze die Summe 28 statt 20?!

Das schaffe ich nicht; das Zusammenspiel von Abfrage, dem berechneten Feld [Schuljahr1] und meinem Bericht birgt im Verbund mit der vielleicht uneindeutigen Formulierung meines Ansinnens sicherlich die Ungereimtheit, dass sich dieses nicht lösen lässt.
Meine Behelfslösung (s.o.) hilft vorab, so dass ich auch ohne die DomFunktion klar komme!

Danke Dir und Johann vielmals!

Viele Grüße
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: MaggieMay am Oktober 11, 2014, 17:26:25
Hallo,

wenn du eine Beispiel-DB mit deinem letzten Versuch nach meinem Vorschlag hochlädst, könnte ich dir sagen was da evtl. falsch dran ist.
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 11, 2014, 21:52:03
Hallo MaggieMay,

das ist ja ein tolles Angebot; ich habe meine DB kräftig entschlackt und unter 300 KB getrimmt. In der DB befindet sich der Bericht mit Namen 'rpt_SCHULBESUCH_Statistik' und die passende Abfrage 'qry_BEARBEITUNG_SCH_VER_EIN_Bericht_SchulbesuchTest'.

Ich bin gespannt!?

Danke vorab!
Trotzdem ein schönes Wochenende
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: MaggieMay am Oktober 12, 2014, 00:59:12
Hallo gromax,

was bitte hat die Abfrage mit dem Bericht zu tun?  ???

Die Abfrage ist völlig überdimensioniert für eine simple Auflistung der Schüleranzahl pro Schule in einem bestimmten Schuljahr.  Hinzu kommt, dass unabhängig von der eher zufälligen Anzeige des Schuljahres im Berichtskopf, sämtliche Datensätze aus der Abfrage bei der Auflistung berücksichtigt werden.

Ist der gezeigte Bericht dein tatsächliches Ziel, dann erkläre bitte was es mit den Schuljahren auf sich hat. Müsste da nicht ein Parameter abgefragt werden, im Sinne von "welches Schuljahr soll ausgewertet werden"?
Oder steckt vielleicht doch etwas ganz anderes dahinter?

BTW:
ZitatDeinen Rat habe ich umgesetzt
Das sehe ich nicht so, mein Vorschlag ging dahin, die Schüler bereits in der Abfrage zu zählen (mittels Gruppierung) anstatt sie einzeln aufzulisten.
Daher kann bei der Zählung der Schüler innerhalb der Abfrage auch immer nur "1" herauskommen.
Zitatund die DomFunktion im Berichtsfuß nun wie folgt formuliert:
=DomSumme("AnzahlvonEIN_Name";"qry_BEARBEITUNG_SCH_VER_EIN_Bericht_Schulbesuch";"[EIN_Name]='" & [EIN_Name] & "' AND [Schuljahr1]='" & [Schuljahr1] & "'").
Das ergibt letztlich 2 Schulen??
Das Summieren dieser Anzahl bezogen auf eine bestimmte Schule (nämlich die letzte) im Berichtsfuß ergibt dann zufälliger- aber auch korrekterweise die "2". Ein weiterer Zufall ist, dass die letzte Schule ebenso wie die erste "2014/15" in Schuljahr1 stehen hat. Sonst würdest du dich über ein ganz anderes vermeintlich falsches Ergebnis wundern.


Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 12, 2014, 15:48:53
Hallo MaggieMay,

danke, dass Du Dich in dieser Sorgfalt meinem Problem widmest!
Zu Deinen Anmerkungen:
- natürlich ist die Abfrage überdimensioniert, da muss ich noch ran!
- der Bericht wird über ein Formular (aktuelles Schuljahr-letztes Schuljahr-nächstes Schuljahr) und dem darin definierten Filter aufgerufen; ob ein Schuljahr aktuell oder außerhalb der Aktualität ist, wird in den Feldern abhängig von 'Date' berechnet. Schuljahr1 ist immer das aktuelle Schuljahr - auch in den kommenden Jahren!
Formel in der Abfrage:

Schuljahr1: Wenn([BEA_Beginn]<Jetzt() Und [BEA_Wiedervorlage]>Jetzt() Und Jetzt()<DatSeriell(Jahr(Jetzt());8;1);Rechts$(Jahr(Jetzt())-1;4) & "/" & Rechts$(Jahr(Jetzt());2);Wenn([BEA_Beginn]<Jetzt() Und [BEA_Wiedervorlage]>Jetzt() Und Jetzt()>DatSeriell(Jahr(Jetzt());8;1);Rechts$(Jahr(Jetzt());4) & "/" & Rechts$(Jahr(Jetzt())+1;2);"-"))


usf.

Jetzt habe ich die Abfrage in den Feldern reduziert, habe gruppiert und auch die "Anzahlen" der Schüler definiert, aber ...? Irgendetwas mache ich immer noch falsch! An den Ergebnissen ändert sich nichts!

Wenn Du noch eine Idee hast, bedanke ich mich vorab!

Einen schönen Sonntag
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: DF6GL am Oktober 12, 2014, 16:13:45
Hallo,

ich kann diesen If-Bedingungen in SQL-Strings nicht viel abgewinnen..

Mein Vorschlag:

Zunächst die Tabellen im Beziehungsfenster so "spaltenmäßig" anzuordnen wie im Bild (um die Hierarchie der Tabellen zu erkennen) und die "Überflieger"-Beziehungen ( und -arten)  nochmal genau zu überdenken, ob die den Tatsachen entsprechen....(z. B. die 3 Beziehungslinien, die tbl_Schueler "hintergehen" und die Beziehungsart zwischen SuS_PS und SuS_FS).

Zudem gibt es IMH(orrible)O noch Optimierungspotential bzgl. der Normalisierung.


Wäre die Normalisierung vollständig umgesetzt, könnte eine Abfrage für den Bericht erstellt werden, die über alle Tabellen (entspr. den Beziehungen) verknüpft und alle Felder (--> Sternchen) aus allen Tabellen (oder aus den akt. nur benötigten) enthält.

Über ein z. B. als Where-Condition-Parameter übergebenes Kriterium (bei der Openreport-Methode) könnte der Bericht nach allen erdenklichen Daten gefiltert und Berechnungen im Bericht erledigt werden.


Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: MaggieMay am Oktober 12, 2014, 19:53:36
Hallo gromax,
ZitatJetzt habe ich die Abfrage in den Feldern reduziert, habe gruppiert und auch die "Anzahlen" der Schüler definiert, aber ...? Irgendetwas mache ich immer noch falsch! An den Ergebnissen ändert sich nichts!
es sind immer noch zu viele Felder in der Abfrage, reduziere sie auf die tatsächlich (für den Bericht) benötigten:{EIN_FS,} EIN_Name, AnzahlSchüler, Schuljahr1/2/3

Zitatder Bericht wird über ein Formular (aktuelles Schuljahr-letztes Schuljahr-nächstes Schuljahr) und dem darin definierten Filter aufgerufen
Das sollte allerdings bei Erstellung der Abfrage berücksichtigt werden, das Formular hättest du also nicht "unterschlagen" sollen.
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 12, 2014, 20:13:26
Hallo MaggieMay,

anbei die DB - jetzt mit Formular (nur "aktuelles Schuljahr") - und die abgespeckte Abfrage; ich dachte zur Berechnung von Schj1/2/3 müssten die zur Berechnung herangezogenen Felder ebenso Bestand der Abfrage sein. Man lernt halt immer wieder dazu!

Den Hinweis von DF6GL nehme ich sehr ernst, nur bin ich jetzt 2 Tage nicht da und für seine "Hausaufgabe" brauche ich vermutlich viel Zeit!

Viele Grüße
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: MaggieMay am Oktober 12, 2014, 23:46:50
Hallo gromax,
Zitatanbei die DB
was genau ist denn jetzt deine Frage dazu?
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 17, 2014, 12:05:13
Hallo MaggieMay,

ursprünglich war die Fragestellung die, wie ich die Dom-Funktion nun formulieren soll, um mittels derer die Anzahl der Schulen zu berechnen.
Du hattest Dich angeboten, in meine DB genauer reinzuschauen und hattest mir zur Bereinigung meiner Abfrage Tipps gegeben. Ich habe nach besten Wissen und ... diese Tipps umgesetzt - jedenfalls habe ich es versucht -, weiß aber immer noch nicht, wie ich diese Dom-Funktion formulieren soll?

Diese Antwort hat jetzt nur noch akademischen Wert, da ich mit der "laufenden Summe" über [=1] ja eine Lösung gefunden habe; der "akademische Wert" aber könnte zu meinem Verständnis der Dom-Funktionen beitragen.

DF6GL hatte während unserer Besprechung noch einen Beitrag zu meinem "Beziehungs-Chaos" formuliert, wofür ich mich hiermit ausdrücklich bedanken möchte; ich habe versucht, meine "Beziehungen" in Ordnung zu bringen und deshalb zur Draufsicht diese als Bild-Datei angehängt. Wenn es dazu noch etwas anzumerken gibt - gerne!

Viele Grüße und Danke
gromax
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: MaggieMay am Oktober 17, 2014, 12:41:30
Hallo,

du brauchst überhaupt keine Dom-Funktion, wenn du in der Abfrage die Schüler zählst und sie im Bericht summierst.
Das funktioniert natürlich nicht, wenn du nach SuS_FS gruppierst und das hätte dir auffallen müssen, wenn du dir das Abfrageergebnis angesehen hättest.

Nimm also die Gruppierung der Spalte SuS_FS aus der Abfrage raus, dann brauchst du im Bericht lediglich zwei Textfelder für die Summe der Schülerzahl und die Anzahl der Schulen.

NACHTRAG:
Da auf die Gruppierung im Bericht nicht verzichtet werden kann, weil es unterschiedliche Zeiträume pro Einrichtung gibt, die u.U. im Bericht zusammengefasst werden müssen, ist die Lösung mit der Referenz auf die lfd. Nummer zur Anzeige der Anzahl Schulen wohl doch die einfachste. Die in der Abfrage ermittelte Schülerzahl muss dann sowohl im Detailbereich als auch im Berichtsfuß summiert werden. Eine Basis für den Einsatz von DCount liefert die Abfrage daher leider nicht.

NOCH EIN TIPP:
Du kannst beim Öffnen des Berichts aus dem Formular heraus einen OpenArgs-Parameter (1,2,3) mitgeben, und anhand dessen im Open-Ereignis des Berichts dem Textfeld für den Zeitraum das Datenfeld für das gewählte Schuljahr zuweisen:Private Sub Report_Open()
    If Not IsNull(Me.OpenArgs) Then _
       Me.BEA_Schulbesuchsjahr.ControlSource = "Schuljahr" & Me.OpenArgs
Mehrfache Berichtskopien brauchst du dafür also nicht.
Titel: Re: Summe in Bericht fehlerhaft??
Beitrag von: gromax am Oktober 17, 2014, 13:43:58
Hallo MaggieMay,

vielen Dank für Deine Geduld!
Ich brauch einfach länger als andere.

Alles Gute
gromax