Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Jon am Januar 30, 2012, 18:06:14

Titel: Feld im Kopfbereich das Summe berechnet
Beitrag von: Jon am Januar 30, 2012, 18:06:14
Hallo Leute!
Ich fange gerade mit Access an und schon so viele Fragen ...

Das Problem, das ich jetzt mal habe: Ich mache hier gerade ein Kassenbuch. Im Formluar, bei den ich die einzelnen Buchungen eingebe, möchte ich im Kopfbereich ein Feld haben, das mir den aktuellen Kassenstand berechnet.
Hierzu müssen 2 Tabellen befragt werden.
Tabelle 1 - tbl_stammdaten: Hier gibt es nur einen Datensatz in dem Name, Adresse, ... und StartKassenstand. Dies ist einmalig einzugeben, damit die Stammdaten und ein Anfangskassenstand vorhanden sind.

Tabelle2 - tbl_buchungen: HIer gibts 5 Felder: BuchID | Datum | Buchungstext | Einzahlung | Entnahme
Im Formular soll jetzt im Kopfbereich ein Feld sein, das Folgendes berechnet: StartKassenstand + alle Einzahlungen - alle Entnahmen
=[tbl_stammdaten]![StartKassenstand]+Summe([tbl_buchungen]![Einzahlung])-Summe([tbl_buchungen]![Entnahme])
Diese Formel bringt mir aber nur #Name?

Könnt ihr mir da bitte weiterhelfen. Was ist hier falsch?
Danke für eure Antworten!

lg
Stefan
Titel: Re: Feld im Kopfbereich das Summe berechnet
Beitrag von: MzKlMu am Januar 30, 2012, 18:42:32
Hallo,
Eigentlich ist das Datenmodell falsch. Einzahlung und Entnahme gehört in eine Spalte (Betrag). Unterschieden wird über das Vorzeichen. Mit einer Vorgangsart (Einzahlung/Entnahme) kann das Vorzeichen automatisiert werden. Der Anfangskassenstand hat in der Stammdatentabelle nichts zu suchen. Der Anfangskassenstand ist die 1. Buchung der Buchungstabelle.
Eine einfache Summenformel ergibt dann den Saldo.
=Summe(Betrag)

Da Du mit Access anfängst würde ich Dir dringend zu einer Umstrukturierung raten.
Titel: Re: Feld im Kopfbereich das Summe berechnet
Beitrag von: DF6GL am Januar 30, 2012, 18:53:11
Hallo,

gerade, weil Du mit Access anfängst..:


1)

"und StartKassenstand. Dies ist einmalig einzugeben, damit die Stammdaten und ein Anfangskassenstand vorhanden sind.

ist prinzipiell Falsch. Ein anfänglicher Bestand kommt durch eine Initial-Bewegung (erste Einbuchung) in tblBuchungen zustande.


2)

"tbl_stammdaten: Hier gibt es nur einen Datensatz in dem Name, Adresse, ... und StartKassenstand."

Hier fehlt das Primärschlüsselfeld ( z. B. "PersID" Datentyp Autowert)  , die Atomisierung von "Adresse" (Aufsplittung in PLZ, Ort, Strasse,etc) und das Entfernen von "StartKassenstand".

Des Weiteren ist auf die Vermeidung der Verwendung reservierter Wörter zu achten (--> "Name" in zwei Felder "Vorname", "Nachname" umbauen)



tbl_buchungen: HIer gibts 5 Felder: BuchID | Buch_PersID  |  Datum | Buchungstext | Einzahlung | Entnahme EinAusZahlung


Es fehlt das Fremdschlüsselfeld zu tbl_Stammdaten (die eigentlich und besser "tblPersonen" heißen sollte) : "Buch_PersID"


Mit den o. g. Änderungen wäre im Steuerelementinhalt eines Textfeldes im Formularfuß(!) dieses zu schreiben:


=Domsumme("EinAusZahlung";"tbl_Buchungen";"Buch_PersID=" & [PersID])


wenn es ein Feld "PersID" im Formular gibt, das die akt. PersID anzeigt.

Am Besten realisiert man das aber mit einer Haupt/Unterformular-Konstruktion. Das Hauptform zeigt die Daten aus tbl_Personen als Einzelform an und enthält ein UFO-Steuerelement, das ein Formular mit Basis zu tbl_Buchungen anzeigt und über die Schlüsselfelder verknüpft.

Titel: Re: Feld im Kopfbereich das Summe berechnet
Beitrag von: Jon am Januar 31, 2012, 12:50:00
Ui, ein Access-Guru und ein Access-Gott haben´s mir aber jetzt gegeben ;)
Ich will euere Einwände beherzigen und fang noch mal von vorne an.
Vielen Dank euch beiden für die Infos. Wenn es nochmal nötig ist meld ich mich noch einmal.

lg
Stefan