Um Nummerkreise zu verwenden, muss man einen Nummernkreis definieren, in dem man einen Auswahllistenwert vom Typ EnumNumberRange anlegt.

Per Attribut

Dieser Nummerkreis kann dann bei der Felddefinition mit dem Attribut [BA.Core.CustomAttributes.NumberRangeInitializer(EnumExecuteAt.OnXXX, EnumNumberRange.MyValueGuid)] verwendet werden.

Der erste Parameter definiert den Zeitpunkt der Nummernvergabe:

  • OnCreated: Die Nummer wird sofort beim erstellen eines neuen Datensatzes vergeben. Sie ist damit in einer Maske sofort sichtbar.
    Falls der Datensatz nicht gespeichert wird, ist die Nummer aber verbraucht.
  • OnSaving: Die Nummer wird erst bei (ersten) Speichern des Datensatzes vergeben, und zwar nur dann, wenn bis dahin keine Nummer auf einem anderen Weg eingetragen wurd, das Feld also noch leer ist. Eine Maske mit einem neuen Datensatz zeigt ein leeres Feld.

Der zweite Parameter wählt den gewünschten Nummernkreis.

Über weitere, optionale Parameter kann die Art der Nummernvergabe beeinflusst werden. Siehe implizite Dokumentation der Parameter in VisualStudio.

Per expliziter Programmierung

Soll die Nummernvergabe komplett selbst programmiert werden, z.B. in einem ORM-Event, so kann statt dessen an der gewünschten Stelle die Funktion Api.ORM.GetNextNumber(...) verwendet werden. Eine damit abgerufene Nummer gilt sofort als verbraucht, auch wenn noch nichts gespeichert wurde.