Summierungen in Base-Bericht

Hallo Liste,
ich mache mal mit meinen Fragen zu meiner Access-Konvertierung zu Base weiter:

Es geht weiter um den (Kassen-)Bericht aus meinem letzten Thread ("Berichtskopf und -Fuß in Base"). Die Aufteilung konnte ich jetzt so sortieren, wie ich es mir wünsche. Die Vorgänge werden aufgelistet und am Ende des Berichtes erfolgt eine Summierung der Beträge ("Einnahmen Bar-Kasse"; "Ausgaben Bar-Kasse" usw.)... Allerdings NUR, wenn alle Felder in der Tabelle ausgefüllt sind!!
Das heisst: wenn ich einen Vorgang habe, bei dem ich etwas aus der Barkasse bezahlt habe, habe ich dort natürlich keine Einnahme und das Feld im Datensatz bleibt leer - damit ist die Summierung im Bericht futsch und es wird "nur" der Inhalt des ersten Datensatzes angezeigt (leer oder ein Wert). Fülle ich alle leeren Felder mit einer "0" ist alles gut, bis auf das kleine Detail, dass es hinterher im Bericht "scheiße" aussieht! (überall "0,00€") (Sorry, ich weiß nicht, ob dieses Wort in der Liste benutzt werden darf - seht es mir nach).

Ein Hinweis von Access: hier ist es so, dass in dem entsprechenden Feld in mindestens einem Datensatz (egal welcher) ein Wert stehen muss, dann ist alles gut und es wird im Bericht die richtige Summe ausgeworfen.

Hier noch ein paar Details: ich benutze für die Summierung ein Textfeld und formatiere unter "Daten" wie folgt: Datenfeld-Typ: Funktion; Datenfeld: KasseEinnahmen; Funktion: Summe; Geltungsbereich: Bericht

Was kann ich besser machen?

Vielleicht sollte ich noch hinzufügen, dass ich KEINERLEI Kenntnisse in Makro-Programmierung habe (SQL?? oder Ähnliches) und mich bisher über Makro-Rekorder (in Excel) und eine vereinfachte Makro-Programmierung (Access) "retten" konnte. Wenn ich manche Threads im Forum lese, schwant mir, dass die gesamte Portierung der Access-Datei daran vielleicht scheitern könnte, dass will ich bis jetzt aber noch nicht akzeptieren.
An dieser Stelle dann vielleicht noch etwas: mein Antrieb, dies alles zu tun, ist darin begründet, endlich von Microsoft (komplett) weg zu kommen. Das scheitert bislang an genau dieser Datenbank und einer Fotobearbeitung mit bestimmten Funktionen, die in GIMP nicht oder nur umständlich vorhanden sind - aber letzteres gehört nicht in diese Liste...

Gruß
Karsten

Hallo Karsten,

Das heisst: wenn ich einen Vorgang habe, bei dem ich etwas aus der
Barkasse bezahlt habe, habe ich dort natürlich keine Einnahme und das
Feld im Datensatz bleibt leer - damit ist die Summierung im Bericht
futsch und es wird "nur" der Inhalt des ersten Datensatzes angezeigt
(leer oder ein Wert). Fülle ich alle leeren Felder mit einer "0" ist
alles gut, bis auf das kleine Detail, dass es hinterher im Bericht
"scheiße" aussieht! (überall "0,00€") (Sorry, ich weiß nicht, ob dieses
Wort in der Liste benutzt werden darf - seht es mir nach).

1. Du könntest bei einem Nullwert die Anzeige des Feldes unterdrücken.
2. Das von Dir angesprochene Verhalten mit den 0-Werten existiert noch
nicht so sehr lange. Ich könnte einmal nachsehen, ob ich die Version
ausfindig machen kann, die es mit den 0-Werten noch nicht so genau nahm.
3. Du könntest die Berechnungen bereits in der Abfrage zu dem Bericht
erstellen. Bevor ich irgendeine Funktion des Report-Builders nutze ist
das immer meine erste Wahl. Außerdem mache ich dann noch von der Abfrage
eine Ansicht (View), auf die dann der Bericht zugreift.

Gruß

Robert

Hallo Robert,

1. Du könntest bei einem Nullwert die Anzeige des Feldes unterdrücken.
2. Das von Dir angesprochene Verhalten mit den 0-Werten existiert noch nicht so sehr lange. Ich könnte einmal nachsehen, ob ich die Version ausfindig machen kann, die es mit den 0-Werten noch nicht so genau nahm.
3. Du könntest die Berechnungen bereits in der Abfrage zu dem Bericht erstellen. Bevor ich irgendeine Funktion des Report-Builders nutze ist das immer meine erste Wahl. Außerdem mache ich dann noch von der Abfrage eine Ansicht (View), auf die dann der Bericht zugreift. Gruß Robert

ich habe mal wieder Zeit gefunden, mich mit der Datenbank zu beschäftigen.

zu 1.) Wo/wie mache ich das? Feld markieren - Eigenschaften - Allgemein - "Ausdruck für bedingte Anzeige"?

zu 2.) Wäre nett, aber hilft mir das, wenn ich die Datenbank in einer aktuellen Version öffne?

zu 3.) Ich habe in der Abfrage zu der Tabelle bei "Funktion" "Summe" bei den Feldern mit Geldbeträgen aktiviert. Das Ergebnis ist folgende Fehlermeldung:

/SQL-Status: 37000//
//Fehler-Code: -67//
//
//Not in aggregate function or group by clause: org.hsqldb.Expression@12933cb in statement [SELECT "Datum" AS "Datum", "Beleg" AS "Beleg", "Verwendungszweck" AS "Verwendungszweck", SUM( "KasseEinnahmen" ) AS "KasseEinnahmen", SUM( "KasseAusgaben" ) AS "KasseAusgaben", SUM( "BankEinnahmen" ) AS "BankEinnahmen", SUM( "BankAusgaben" ) AS "BankAusgaben", SUM( "SparbuchEinnahmen" ) AS "SparbuchEinnahmen", SUM( "SparbuchAusgaben" ) AS "SparbuchAusgaben" FROM "1998" WHERE NOT "Datum" = NULL ORDER BY "Datum" ASC, "Beleg" ASC]//
/
Habe ich was übersehen oder bin ich (mal wieder) auf dem Holzweg?

Gruß
Karsten

Habe gerade nochmal weiter probiert und zu 1.) eine Möglichkeit bei der "Bedingten Formatierung" gefunden (wenn Feld = 0 dann Schriftfarbe weiß). Ist zwar alles andere als elegant, erfüllt aber den Zweck...

Karsten

Hallo Karsten,

1. Du könntest bei einem Nullwert die Anzeige des Feldes unterdrücken.
2. Das von Dir angesprochene Verhalten mit den 0-Werten existiert noch
nicht so sehr lange. Ich könnte einmal nachsehen, ob ich die Version
ausfindig machen kann, die es mit den 0-Werten noch nicht so genau nahm.
3. Du könntest die Berechnungen bereits in der Abfrage zu dem Bericht
erstellen. Bevor ich irgendeine Funktion des Report-Builders nutze ist
das immer meine erste Wahl. Außerdem mache ich dann noch von der
Abfrage eine Ansicht (View), auf die dann der Bericht zugreift. Gruß
Robert

ich habe mal wieder Zeit gefunden, mich mit der Datenbank zu beschäftigen.

zu 1.) Wo/wie mache ich das? Feld markieren - Eigenschaften - Allgemein
- "Ausdruck für bedingte Anzeige"?

Im Report-Builder auf das feld gehen, das "0" nicht anzeigen soll. Dann
die Eigenschaften rechts von der Eingabefläche aufsuchen. Nimm Dir
gegebenenfalls das Base-Handbuch, Kapitel "Berichte", zu Hilfe.

zu 2.) Wäre nett, aber hilft mir das, wenn ich die Datenbank in einer
aktuellen Version öffne?

Nein, hilft Dir in der aktuellen Version nicht. Ich habe mit Base eine
ganze Zeit lang mit der 3.3.4 gearbeitet, da die nachfolgenden Versionen
aus unterschiedlichen Gründen für mich nicht zu gebrauchen waren.

zu 3.) Ich habe in der Abfrage zu der Tabelle bei "Funktion" "Summe" bei
den Feldern mit Geldbeträgen aktiviert. Das Ergebnis ist folgende
Fehlermeldung:

/SQL-Status: 37000//
//Fehler-Code: -67//
//
//Not in aggregate function or group by clause:
org.hsqldb.Expression@12933cb in statement [SELECT "Datum" AS "Datum",
"Beleg" AS "Beleg", "Verwendungszweck" AS "Verwendungszweck", SUM(
"KasseEinnahmen" ) AS "KasseEinnahmen", SUM( "KasseAusgaben" ) AS
"KasseAusgaben", SUM( "BankEinnahmen" ) AS "BankEinnahmen", SUM(
"BankAusgaben" ) AS "BankAusgaben", SUM( "SparbuchEinnahmen" ) AS
"SparbuchEinnahmen", SUM( "SparbuchAusgaben" ) AS "SparbuchAusgaben"
FROM "1998" WHERE NOT "Datum" = NULL ORDER BY "Datum" ASC, "Beleg" ASC]//
/
Habe ich was übersehen oder bin ich (mal wieder) auf dem Holzweg?

Du musst bei so einer Abfrage alle die Felder, die nicht mit der
Summenfunktion versehen sind, in die Gruppierung mit einfließen lassen.
Das ist das, was die Fehlermeldung besagt.
Das, was Du erreichen willst, schaffst Du wohl besser mit einer
korrelierenden Unterabfrage. Ich zitiere hier einmal aus dem Handbuch:

SELECT "ID", "Betrag", ( SELECT SUM( "Betrag" ) FROM "Kasse" WHERE
"ID" <= "a"."ID" ) AS "Saldo" FROM "Kasse" AS "a" ORDER BY "ID" ASC

(Einstiegsabfrage S. 274 der aktuellen Handbuchausgabe wird zu)

SELECT "ID", "Datum", "Betrag", "Konto_ID",
( SELECT "Konto" FROM "Konto" WHERE "ID" = "a"."Konto_ID" ) AS
"Kontoname",
( SELECT SUM( "Betrag" ) FROM "Kasse" WHERE "Datum" <= "a"."Datum" AND
"Konto_ID" = "a"."Konto_ID" ) AS "Saldo",
( SELECT SUM( "Betrag" ) FROM "Kasse" WHERE "Datum" <= "a"."Datum" )
AS "Saldo_gesamt"
FROM "Kasse" AS "a" ORDER BY "Datum", "ID" ASC

Mit dieser Abfrageform hast Du alle Informationen in der Abfrage und
kannst sogar die Abfrage noch editieren.

Gruß

Robert