Aktualisierung - allgemeine Frage

Hallo,

da ich mit meiner Aktualisierung von Daten noch nicht weitergekommen bin, hier nochmal eine allgemeine Frage zur Vorgehensweise:

Ich habe ein Formular was sich mit gefilterten Datensätzen öffnet (z.B. 10 Datensätze) im Formular kann man Zahlen eingeben die beim verlassen des Formulars eine Berechnung durchführen.

Ich suche nun nach einer Möglichkeit, dass die Berechnung in allen 10 DS dann automatisch durchgeführt wird und nicht nur in dem gerade geöffneten Formular. Die Berechnungen müssen dann auch gleich in der Tabelle aktualisiert werden.

Da die Berechnung sehr komplex ist habe ich keine Ahnung wie ich sowas z.B. in eine Update-Anweisung reinbekomme…

Hat da jemand einen Tipp…

Hallo,

Ich habe ein Formular was sich mit gefilterten Datensätzen
öffnet (z.B. 10 Datensätze)

die Anzahl der DS ist unerheblich. Wichtiger ist das Filterkriterium.

im Formular kann man Zahlen
eingeben

Wo eingeben? sind das gebundene oder ungebundene Felder?

die beim verlassen des Formulars eine Berechnung
durchführen.

Haben die Zahlen denn irgendeinen Bezug zu den angezeigten (gefilterten) Datensätzen?

Wieso wird "Beim Verlassen des Formulars(!) " (meinst Du „Beim Schliessen“ ? ) eine Berechnung durchgeführt?

Ich suche nun nach einer Möglichkeit, dass die Berechnung in
allen 10 DS dann automatisch durchgeführt wird und nicht nur
in dem gerade geöffneten Formular. Die Berechnungen müssen
dann auch gleich in der Tabelle aktualisiert werden.

Warum müssen die Berechnungen in der Tabelle(!) aktualisiert werden ?. Die Berechnungen können doch immer dann ausgeführt werden, wenn man sie braucht, und das bezogen auf den jeweiligen akt. DS…

Da die Berechnung sehr komplex ist habe ich keine Ahnung wie
ich sowas z.B. in eine Update-Anweisung reinbekomme…

MAn könnte die Berechnung in einer Public-Funktion (in einem Standard-Modul) erledigen und die Funktion aus der Abfrage heraus aufrufen.

Zeige doch mal den Algorithmus der Berechnung…

Viele Grüße vom Bodensee
Franz, DF6GL

Das ganze Vorhaben deutet auf unbrauchbares DB-Konzept hin, sorry…

Hallo Franz,

die DS sind nach Verteildatum und einer ID (Tempfeld) gefiltert, welche man vor dem öffnen des Formulars auf der Startseite auswählt.

[Formulare]![Startseite]![Verteildatum]
[Formulare]![Startseite]![Tempfeld]

Im Formular sind die Datenfelder die ich für die Berechnung benötige alle gebunden. (Honorar, Menge, Gesamtpreis…)
Ändert man da einen Wert (z.B. Menge) und schließt das Formular wird die Berechnung ausgeführt damit der Gesamtpreis wieder stimmt. (Menge*Honorar=Gesamtpreis) soweit klappt das problemlos.

Da man z.B. das Honorar global auch ändern kann (auf der Startseite), suche ich nun die Möglichkeit das er dann die Berechnung für alle gefilterten DS macht… Er müßte in die gefilterten Daten gehen, jede Zeile berechnen und den Gesamtpreis in der Tabelle hinterlegen!

Würde diese Aktualisierung der Tabelle nicht laufen, habe ich Probleme mit meinem Bericht, da dort nur noch der Gesamtpreis ausgelesen wird…

Hoffe das versteht man einigermaßen :smile:
Danke, Thomas

HAllo,

schon schwierig zu verstehen… :wink:

die DS sind nach Verteildatum und einer ID (Tempfeld)
gefiltert, welche man vor dem öffnen des Formulars auf der
Startseite auswählt.

Warum VOR dem Öffnen? Mach das doch IM Formular, nachdem das Form geöffnet wurde.

[Formulare]![Startseite]![Verteildatum]
[Formulare]![Startseite]![Tempfeld]

auf solche unglückseligen Verweise kann man dann verzichten.

Im Formular sind die Datenfelder die ich für die Berechnung
benötige alle gebunden. (Honorar, Menge, Gesamtpreis…)

d. h. es handelt sich hier um eine Rechnungserstellung (bzw. Rechungsformular) ?

Ändert man da einen Wert (z.B. Menge) und schließt das
Formular wird die Berechnung ausgeführt damit der Gesamtpreis

hier sollte „Beim Verlassen“, bzw. besser „Nach Aktualisierung“ des Mengenfeldes der Geaamtpreis (für die Position) neu berechnet werden.

wieder stimmt. (Menge*Honorar=Gesamtpreis) soweit klappt das
problemlos.

halt nur „soweit“…

Da man z.B. das Honorar global auch ändern kann (auf der
Startseite),

Von was ist das Honorar abhängig?

suche ich nun die Möglichkeit das er dann die
Berechnung für alle gefilterten DS macht…

Die „gefilterten“ DS sind doch die zu einer Rechnung zugehörenden Positionen… Wenn diese Positionen mit einem UFO dargestellt werden, wie heißt denn dann das (Haupt-)Form für die „Rechnung“ ( d. h. das Form, in dem alle restlichen Rechnungsdaten (RechNr, Rechdatum, Anschrift, Gesamtpreis , Zahlungskonditionen, etc. stehen)?

Er müßte in die
gefilterten Daten gehen, jede Zeile berechnen und den
Gesamtpreis in der Tabelle hinterlegen!

Das ist bei einem geeigneterem Datenaufbau nicht notwendig. Wenn grundsätzlich keine Berechnungsergebnisse in den Tabellen gespeichert, sondern die Berechnung immer aktuell in den „Objekten“ (Formulare, Berichte) gemacht werden, hat man dieses Problem nicht.

Es gibt aber Situationen, an denen man aus Archivierungsgründen (z. B. darf eine (gültige) Rechnung im Nachhinein sich nicht mehr ändern, wenn ein Vorgabewert (z. B. die MwSt) sich mal ändern sollte.

Dann kann man eine Tabelle erstellen, die auch die (vorher) berechneten Werte speichert.

Die Neuberechung in einer akt. Rechnung würde ich in eine Funktion auslagern, die die gesamten Rechnungsangaben umfasst und beim „Nach Aktualisierung“-Ereignis eines jeden Feldes aufrufen, dessen Inhalt geändert werden kann und das Einfluss auf Rechenrgebnisse hat.

Für das Ganze braucht man zwei Formulare

frm_Rechkopf (Beinhaltet alle Daten der Rechnung ausser den Positionsdaten)
frm_RechPos (beinhaltet nur die Daten der Position(en) und wird als UFO im o. g. Hauptform „frm_Rechkopf“ angezeigt )

Selbstredend basieren die Beiden Forms auf zwei Tabellen

tbl_Rechkopf und
tbl_RechPos

die in 1:n-Beziehung zueinander stehen.

Werden Werte gebraucht, die „quasi-konstant“ sind, z. B. die MwSt, so könnten die in einer „Parametertabelle“ hinterlegt werden, die ab und an aktulisiert werden kann. Diese Werte können dann mit Dlookup bei Bedarf ausgelesen werden.

Viele Grüße vom Bodensee
Franz, DF6GL

Hallo Franz,

vielen Dank für die ausführliche Information, mein Fehler lag bei den einzelnen Variablen. Ich habe teilweise in den Berechnungen das „rs.“ vor der Variable aus meinem Recordset vergessen und somit konnte nix sinnvolles rauskommen.
Jetzt funktioniert alles! Sicherlich gibt es einen sinnvolleren Aufbau, aber wenn schon viel Vorarbeit geleistet wurde und nur noch Anpassungen und Verbesserungen gemacht werden sollen, macht es keinen Sinn alles komplett zu ändern. Auch wenn es mich manchmal zur Verzweiflung bringt :smile:
Danke nochmals für deine Hilfe!!!
MfG Thomas