Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Summe in Bericht fehlerhaft??

Begonnen von gromax, Oktober 07, 2014, 15:06:53

⏪ vorheriges - nächstes ⏩

gromax

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

Jonny

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

gromax

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

Jonny

Wo kommt Ein_Name her?
ist das eine seperate Tabelle oder die gleiche Tabelle wie SuS_Name?

Gruß
Johann

gromax

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

Jonny

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

gromax

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

Jonny

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

gromax

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

gromax

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

MaggieMay

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.
Freundliche Grüße
MaggieMay

gromax

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

MaggieMay

#13
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.


Freundliche Grüße
MaggieMay

gromax

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