Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Feld im Kopfbereich das Summe berechnet

Begonnen von Jon, Januar 30, 2012, 18:06:14

⏪ vorheriges - nächstes ⏩

Jon

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

MzKlMu

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.
Gruß Klaus

DF6GL

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.


Jon

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