Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: Accessiv am März 05, 2015, 13:42:29

Titel: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 05, 2015, 13:42:29
Hallo,

ich versuche ein Haushaltsbuch mit Access zu realisieren. Mein Problem ist nun, dass in dieser Datenbank Ausgaben als negative Werte gespeichert werden sollen ohne dass ich jedes mal das Minuszeichen vor dem Betrag eingeben muss. Ich habe deshalb zwei Schaltflächen in das Formular aufgenommen (siehe Anhang). Wenn die Schaltfläche "Ausgabe" gedrückt wird, soll der eingegebene Buchungsbetrag mit (-1) multipliziert werden und anschließend der Datensatz gespeichert werden.
Ich habe vergeblich versucht das Problem über ein Makro zu lösen, da ich VBA nicht beherrsche.
Kann mir jemand bei Erstellung des Makros helfen?

Vielen Dank im Voraus
Helmut
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MaggieMay am März 05, 2015, 14:03:31
Hallo,

der VBA-Code hinterm dem roten Button könnte wie folgt aussehen:

Me!Betrag = Me!Betrag * -1
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 05, 2015, 14:04:24
Hallo,
wenn das richtig gemacht wird, brauchst Du hier weder VBA noch ein Makro,
Du hast ja die Tabelle Kategorie, in dieser Tabelle legst Du ein Feld an für den Multiplikator, 1 für Einnahmen und -1 für Ausgaben.
Alle Beträge werden positiv eingegeben und auch gespeichert.
In einer Abfrage erstellst Du ein berechnetes Feld für den Rechenwert.
Rechenwert: Betrag*Multiplikator
Für die Saldenbildung verwendest Du diesen Rechenwert.
Die 3 Buttons sind dann überflüssig, sind auch jetzt schon überflüssig, weil sich die Art der Buchung an der Kategorie festmachen lässt.
Du kannst auch mit dem Multiplikator das Feld wie gewünscht darstellen, mit einen Einzeiler VBA. (Siehe Beispiel von MaggieMay)

Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 05, 2015, 16:23:07
Hallo,

vielen Dank an Euch beide für die schnelle Antwort. Finde ich beide gut und hilfreich. Vielleicht seit ihr so nett und helft mir auch mit der dritten Schaltfläche. Sie ist - wie der Name sagt - dazu gedacht, eine Umbuchung von einem Quellkonto, das in einem Popup-Formular ausgewählt werden kann, auf das Zielkonto (das ist das Konto, dass in dem Buchungsformular ausgewählt wird) durchzuführen. D. h. es wird eine Buchung mit dem Betrag im Buchungsformular für das Zielkonto erzeugt. Dazu soll nun automatisch die "Gegenbuchung" mit negativem Betrag von dem Quellkonto erfolgen und ebenfalls automatisch in die Tabelle aller Buchungen aufgenommen werden.
Ich fürchte, dass geht nur mit VBA.

Für eure weitere Hilfe wäre ich sehr dankbar.
Viele Grüße Helmut
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 05, 2015, 16:33:27
Hallo,
und ebenfalls automatisch in die Tabelle aller Buchungen aufgenommen werden.da müsste man erst mal das Datenmodell kenne.
Wieso hast Du eine extra Tabelle für alle Buchungen ?

Alle Buchungen für alle Konten, egal ob Umbuchung, Einnahme Ausgabe gehören in eine Tabelle. Wenn Du etwas umbuchst, wird in dieser einen Tabelle 2 Datensätze erzeugt einer für Quellkonto und einer für Zielkonto.
Der Einfachheit halber machst Du für Umbuchungen 2 Arten, eine Soll Umbuchung (-1) und eine Habenumbuchung (1).
Das Gegenkonto würde ich als extra Feld auch in dieser einen Buchungstabelle führen. Dann musst Du nur das Gegenkonto eintragen auswählen ob Haben oder Soll, der Rest ist dann mit einer Anfügeabfrage (die über VBA angestoßen wird) gleich erledigt.

Erkläre mal genauer welche Tabelle mit welchen Beziehungen und Feldern Du hast.
Ein Bild des Beziehungsfensters könnte hilfreich sein.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 05, 2015, 16:57:53
Hallo Klaus,

ZitatAlle Buchungen für alle Konten, egal ob Umbuchung, Einnahme Ausgabe gehören in eine Tabelle. Wenn Du etwas umbuchst, wird in dieser einen Tabelle 2 Datensätze erzeugt einer für Quellkonto und einer für Zielkonto.
Der Einfachheit halber machst Du für Umbuchungen 2 Arten, eine Soll Umbuchung (-1) und eine Habenumbuchung (1).

genau so möchte ich es realisieren (siehe Anhänge), wobei jetzt die Buchung für das Quellkonto automatisch in die Tabelle eingetragen wird.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 05, 2015, 17:04:32
Hallo,
wo ist der Multiplikator für die Kategorie ?
In die Buchungstabelle sollte noch ein Feld für das Gegenkonto.
Über die Auswahl der Kategorie Umbuchung (Soll oder Haben) kannst Du dann 2 Buchungen veranlassen. Damit entfällt dann auch der Button für Umbuchungen. Bei normalen Buchungen (Einnahmen/Ausgaben) bleibt das Gegenkonto leer.
Für das Gegenkonto kannst Du die Tabelle mit den Konten 2x in das Beziehungsfenster aufnehmen und je eine 1:n Beziehung anlegen.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 05, 2015, 17:39:37
Hallo Klaus,

meinst Du es so? siehe Anhänge
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 05, 2015, 18:51:30
Hallo,
nein, die beiden Kontentabellen müssen auf je ein Feld verweisen. Du benötigst noch ein Feld für das Gegenkonto. Also zwei Felder für die Fremdschlüssel Konto.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 05, 2015, 19:05:47
Hallo Klaus,

ja klar! Ich glaube so ist es jetzt richtig.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 05, 2015, 19:09:26
Hallo,
ja, so ist das OK.
Denke daran, alle Beträge müssen positiv (+) gespeichert werden, auch Ausgaben erhalten kein - Zeichen.
Es muss auch per VBA verhindert werden, dass man eine negative Zahl eingeben kann, auch nicht aus Versehen.
Die Hinweise im Haushaltsbuch Bild sind falsch und nicht mehr notwendig.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 05, 2015, 19:16:20
Hallo Klaus,

in meinem ersten Beitrag hatte ich ja geschrieben, dass ich über keine VBA-Fähigkeiten verfüge. Könntest Du mir bitte helfen einen passenden VBA-Code zu generieren?
Das wäre wirklich super.

Viele Grüße Helmut
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 05, 2015, 19:21:28
Hallo,
erstelle eine DB mit den Tabellen und Feldern und lade diese DB hier hoch. Ich müsste ja sonst das alles selbst nachbauen.
Aber, ich benötige die DB im Access2003 (MDB) Format, ich habe nur diese Version und kann keine Accdb öffnen und ansehen.

Fange eine neue DB in diesem Format an und importiere die Tabellen, lade dann hier hoch. Vorher komprimieren (Access Dienstprogramm) und Zippen.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 05, 2015, 20:04:43
Hallo Klaus,

dass finde ich toll von Dir!

Ich habe früher mal in Pascal und Python programmiert, bin also in Sachen programmieren nicht ganz unbeleckt. Wenn Du die VBA Routine mit einigen Kommentaren versehen würdest, könnte ich den Code u. U. nachvollziehen.

Nochmals vielen herzlichen Dank für Deine Bereitschaft mir zu helfen.

Viele Grüße Helmut

PS: Ich hoffe ich habe bei dem Anhang alles richtig gemacht.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 05, 2015, 20:22:44
Hallo,
es ist OK so, es wird aber morgen Abend.
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 06, 2015, 11:10:21
Hallo Klaus,

das ist völlig OK. So eilig habe ich es nicht.

Helmut
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: MzKlMu am März 07, 2015, 19:18:20
Hallo,
anbei mal ein Vorschlag.
Es gibt 2 Arten einer Umbuchung, Umbuchung Soll und Umbuchung Haben.
Eine Umbuchung muss im Moment noch für das Soll Konto (Umbuchung Soll) begonnen werden. Das könnte man bei Bedarf noch ändern, dass es egal ist wie rum. Erfordert weiteren VBA Code. Das Gegenkonto wird erst sichtbar, wenn Umbuchung gewählt wurde.
Wenn alle Felder gefüllt sind, kann man den Button "Buchen" drücken, dann wird der Datensatz im Ufo links angezeigt. Bei Umbuchung werden 2 Datensätze angelegt. Ich habe noch ein Feld bchSatz eingefügt, für das Gegenkonto wird dann hier eine 2 eingefügt. Dadurch ist sichergestellt, dass die 2 DS Umbuchung immer untereinander angezeigt werden.
Die Abfrage legt ein berechnetes Feld (Rechenbetrag) an, mit diesem Feld wird gerechnet (Saldenbildung) Im Ufo kann man das unsichtbar machen. Habe ich jetzt nur zur Verdeutlichung gelassen. Da siehst Du auch das Minus Zeichen.

Es gibt noch Buttons zum Filtern, das muss noch verfeinert/ausgebaut werden.

Achtung, es ist keine Prüfung eingebaut dass alle Felder gefüllt sind, das muss noch gemacht werden. Du musst zum Testen selbst dafür sorgen, dass die Felder vor dem Buchen nicht leer sind.

Schaue es Dir an, bei Fragen melden.

Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 07, 2015, 20:02:15
Hallo Klaus,

erst noch einmal vielen Dank für Deine Mühe. Ich freue mich sehr, dass Du Dein Versprechen wahr gemacht hast  :D. Morgen ist ja Sonntag und damit habe ich genug Zeit mir alles mal in Ruhe anzuschauen. Ich werde mich auf jeden Fall noch einmal melden.
Gruß Helmut
Titel: Re: Feldwert vor dem Speichern verändern.
Beitrag von: Accessiv am März 08, 2015, 12:35:41
Hallo Klaus,

soweit alles gut. Bis auf zwei Kleinigkeiten:

Viele Grüße Helmut