Januar 24, 2021, 02:45:45

Neuigkeiten:

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


Standardwert neu laden bzw. erneut abrufen

Begonnen von VIE81, Dezember 03, 2020, 20:00:10

⏪ vorheriges - nächstes ⏩

VIE81

Hallo zusammen!

Meine DB ist aufgeteilt auf Back- und Frontend - sie funktioniert auch so, wie ich es möchte  ;)

Mir ist vor dem "Roll-Out" aber noch etwas eingefallen, wo ich hänge und nicht weiter weiß. Vielleicht könnt ihr mir helfen.

In meinem Formular gibt es ein Feld "VGN_OE" aus der Tabelle "tblVgn". Diese Tabelle hat nur dieses eine Feld und auch nur einen Datensatz. Der Inhalt ist eine Vorgangsnummer, die - ich habe mir hier vor Urzeiten einmal eine Beispiel-DB von TommyK mit einer Funktion für benutzerdefinierte Zähler heruntergeladen - beim Speichern des Datensatzes im Formular immer um eine Zahl weiter hinaufgezählt wird.

Als Standardwert im Formular habe ich

=UniCounter_New(4;"tblVgn";"VGN_OE";6;Wahr;Wahr;"-";"";"OE/6173/")
definiert; beim Aufrufen des Formulars referenziert der Standardwert den Feldinhalt aus dem einen Datensatz der Tabelle.

Mein Problem - die DB ist als Mehrbenutzerumgebung ausgeführt - besteht jetzt darin dass, dass ggf. zwei Benutzer gleichzeitig das Formular geöffnet haben und einen neuen Datensatz erfassen wollen und hier beim Speichern der dem Formular zugrundeliegenden Tabelle "tblVorgaenge" im Feld "oeVGNNr" zweimal die gleiche Vorgangsnummer gespeichert wird. Das soll natürlich nicht sein.

Das Speichern des Datensatzes selbst führe ich mit dem - auszugsweise dargestelltem - folgendem Code aus:

DoCmd.RunCommand acCmdSaveRecord
DoCmd.RunSQL "UPDATE tblVgn SET tblVgn.VGN_OE = Formulare!frm_Vorgaenge!oeVGNNr", -1

Gibt es eine Möglichkeit, den für das Feld definierten Standardwert vor dem Speichern des Datensatzes erneut abzufragen, sprich zu aktualisieren oder neu zu referenzieren?

Danke für Eure Hilfe.

Viele Grüße,
VIE81

DF6GL

Hallo,


quick&dirty (und auch nicht 100% sicher) :

Ermittle die Nummer nicht beim Anlegen eines neuen DS als Standardwert, sondern nutze das Form_BeforeUpdate-Ereignis, um die neue Nummer dem Formular-Feld zuzuweisen.
Benutze das Form_Update-Ereignis, um die neue  Nummer in die Tabelle zu speichern.

Es ist recht unwahrscheinlich, dass während dieser Operation ein anderer User zum selben Augenblick auch eine neue Nummer "verbraucht".


Wenn zudem das Tabellenfeld "VGN_OE"   einen eindeutigen Index besitzt, kann allenfalls ein Zugriffsfehler in der Konfliktsituation auftreten.


VIE81

Hallo Franz!

Vielen Dank für den Denkanstoß - funktioniert tadellos  :)

Viele Grüße,
VIE81