Supportnet / Forum / Datenbanken
Summe in Tabelle übernehmen
Frage
Hallo Zusammen ,
bin hier am verzweifeld, habe in meinem Formular berechnete Felder, die Summen werden hier auch wunderbar angezeigt, erscheinen aber leider nicht in der Tabelle.
Was mach ich bloß falsch?
Danke und Gruß
Marion
Antwort 1 von konny
Ich nochmal,
zum besseren Verstandnis:
Ich habe drei Felder Zahlung_1, Zahlung_2 und Zahlung_3, in jedem Feld steht ein Wert.
Dann habe ich noch ein Feld Gesamtsumme und hier steht die Formel unter Steuerelementeinhalt:
=[Zahlung_1]+[Zahlung_2]+[Zahlung_3]
Der richtige Wert wird im Fenster Gesamtsumme angezeigt, aber nicht in die Tabelle übernommen.
Was ist falsch?
zum besseren Verstandnis:
Ich habe drei Felder Zahlung_1, Zahlung_2 und Zahlung_3, in jedem Feld steht ein Wert.
Dann habe ich noch ein Feld Gesamtsumme und hier steht die Formel unter Steuerelementeinhalt:
=[Zahlung_1]+[Zahlung_2]+[Zahlung_3]
Der richtige Wert wird im Fenster Gesamtsumme angezeigt, aber nicht in die Tabelle übernommen.
Was ist falsch?
Antwort 2 von oliverV
Hallo Marion,
nichts ist falsch.
Du hast alles (wahrscheinlich unbeabsichtigt) nichtig gemacht.
Deine Felder Zahlung_1 - _3 dürften gebundene Formularfelder sein, d.h. der Wert wird in der entsprechenden Tabelle gespeichert.
Das Feld Gesamtsumme ist ein ungebundenes Formularfeld, dessen Inhalt sich über den Steuerelementinhalt berechnet.
Grundsätzlich sollte man keine berechneten Werte in einer Tabelle speichern !
Die Gesamtsumme kannst du jederzeit zur Laufzeit berechnen (in einem Bericht, einer anderen Abfrage, usw.), so bekommst du niemals Aktualisierungsprobleme.
Wenn du ein berechnetes Feld in einer Tabelle speicherst und nachträglich die Basis der Berechnung änderst (als z.B. Zahlung_2), wird das berechnete Feld nicht automatisch neu berechnet.
Wenn du dennoch nicht auf mich hören willst und die Gesamtsumme in der Tabelle speichern willst, muss du dein Formularfeld [Gesamtsumme] an das Tabellenfeld [Gesamtsumme] binden (ändere den Steuerelementinhalt).
Verwende beim Ereignis "Nach Aktualisierung" der drei Einzelzahlungsfelder sinngemäß folgenden VBA-Code:
[Code]
Me.Gesamtsumme = Me.Zahlung_1 + Me.Zahlung_2 + Me.Zahlung_3
Das Formularfeld [Gesamtsumme] solltest du auf jeden Fall sperren, sodass ein unbeabsichtigtes überschreiben oder Löschen nicht möglich ist; weiterhin sollte gewährleistet sein, das es in der Datenbank keine andere Zugriffsmöglichkeit auf das Gesamtsummenfeld oder die Einzelzahlungsfelder gibt, um ein dortiges Editieren zu vermeiden; sonst bekommst du die zuvor beschriebenen Aktualisierungsprobleme.
Grundsätzlich (ohne die DB-Struktur genauer zu kennen) dürfte es auch nicht besonders sinnvoll sein, in einem Datensatz 3 Zahlungsfelder zu hinterlegen.
Wenn Teilzahlungen möglich sind, sollte man dies über eine separate Tabelle tbl_Zahlungen realisieren.
Die Formulardarstellung nimmt man normalerweise in einem Unterformular vor.
Hierbei kann man pro Datensatz (Rechnung o.ä.) beliebig viele Zahlungen erfassen (nicht wie bisher max. 3, in der Praxis aber wahrscheinlich meistens nur eine Zahlung).
Gruß
Oliver
nichts ist falsch.
Du hast alles (wahrscheinlich unbeabsichtigt) nichtig gemacht.
Deine Felder Zahlung_1 - _3 dürften gebundene Formularfelder sein, d.h. der Wert wird in der entsprechenden Tabelle gespeichert.
Das Feld Gesamtsumme ist ein ungebundenes Formularfeld, dessen Inhalt sich über den Steuerelementinhalt berechnet.
Grundsätzlich sollte man keine berechneten Werte in einer Tabelle speichern !
Die Gesamtsumme kannst du jederzeit zur Laufzeit berechnen (in einem Bericht, einer anderen Abfrage, usw.), so bekommst du niemals Aktualisierungsprobleme.
Wenn du ein berechnetes Feld in einer Tabelle speicherst und nachträglich die Basis der Berechnung änderst (als z.B. Zahlung_2), wird das berechnete Feld nicht automatisch neu berechnet.
Wenn du dennoch nicht auf mich hören willst und die Gesamtsumme in der Tabelle speichern willst, muss du dein Formularfeld [Gesamtsumme] an das Tabellenfeld [Gesamtsumme] binden (ändere den Steuerelementinhalt).
Verwende beim Ereignis "Nach Aktualisierung" der drei Einzelzahlungsfelder sinngemäß folgenden VBA-Code:
[Code]
Me.Gesamtsumme = Me.Zahlung_1 + Me.Zahlung_2 + Me.Zahlung_3
Das Formularfeld [Gesamtsumme] solltest du auf jeden Fall sperren, sodass ein unbeabsichtigtes überschreiben oder Löschen nicht möglich ist; weiterhin sollte gewährleistet sein, das es in der Datenbank keine andere Zugriffsmöglichkeit auf das Gesamtsummenfeld oder die Einzelzahlungsfelder gibt, um ein dortiges Editieren zu vermeiden; sonst bekommst du die zuvor beschriebenen Aktualisierungsprobleme.
Grundsätzlich (ohne die DB-Struktur genauer zu kennen) dürfte es auch nicht besonders sinnvoll sein, in einem Datensatz 3 Zahlungsfelder zu hinterlegen.
Wenn Teilzahlungen möglich sind, sollte man dies über eine separate Tabelle tbl_Zahlungen realisieren.
Die Formulardarstellung nimmt man normalerweise in einem Unterformular vor.
Hierbei kann man pro Datensatz (Rechnung o.ä.) beliebig viele Zahlungen erfassen (nicht wie bisher max. 3, in der Praxis aber wahrscheinlich meistens nur eine Zahlung).
Gruß
Oliver
Antwort 3 von konny
Hallo Oliver,
vielen Dank für Deine Antwort, ich habe jetzt das Feld Gesamtsumme gesperrt und unter Ereignis die Formel eingetragen, die Du mir genannt hast(aber nur bei Gesamtsumme, ist doch richtig oder).
jetzt erscheibt dort aber:
=[Me].[Gesamtsumme]=[Me].[Zahlung_2002]+[Me].[Zahlung_2003]+[Me].[Zahlung_2004]
kann das richtig sein?
Gruß Marion
vielen Dank für Deine Antwort, ich habe jetzt das Feld Gesamtsumme gesperrt und unter Ereignis die Formel eingetragen, die Du mir genannt hast(aber nur bei Gesamtsumme, ist doch richtig oder).
jetzt erscheibt dort aber:
=[Me].[Gesamtsumme]=[Me].[Zahlung_2002]+[Me].[Zahlung_2003]+[Me].[Zahlung_2004]
kann das richtig sein?
Gruß Marion
Antwort 4 von oliverV
Hallo Marion,
den Code musst du beim Ereignis "Nach Aktualisierung" des Formularfeldes [Zahlung_1] in den VBA-Editor eingeben (klicke dazu auf die drei Punkte am Ende der Zeile, dann öffnet sich der Editor).
Trage dort zwischen
[Code]
Private Sub Zahlung_1__AfterUpdate()
Und
End Sub
den entsprechenden Code ein.
(Das Ereignis "Nach Aktualisierung" tritt ein, wenn der Inhalt des Formularfeldes geändert wird).
Wiederhole das bei den Feldern Zahlung_2 und Zahlung_3.
Entferne deinen Eintrag in dem Gesamtsummenfeld.
Gruß
Oliver
den Code musst du beim Ereignis "Nach Aktualisierung" des Formularfeldes [Zahlung_1] in den VBA-Editor eingeben (klicke dazu auf die drei Punkte am Ende der Zeile, dann öffnet sich der Editor).
Trage dort zwischen
[Code]
Private Sub Zahlung_1__AfterUpdate()
Und
End Sub
den entsprechenden Code ein.
(Das Ereignis "Nach Aktualisierung" tritt ein, wenn der Inhalt des Formularfeldes geändert wird).
Wiederhole das bei den Feldern Zahlung_2 und Zahlung_3.
Entferne deinen Eintrag in dem Gesamtsummenfeld.
Gruß
Oliver
Antwort 5 von konny
Hallo Oliver,
tausend Dank, jetzt funktioniert alles.
Danke und
Gruß Marion
tausend Dank, jetzt funktioniert alles.
Danke und
Gruß Marion

