0

Wert lfdNummer zurücksetzten bei Jahreswechsel

Ich habe eine Datenbank, in der eine Vertragsnummer automatisch vergben wird; hierzu habe ich folgende Felder eingerichte:

lfdNr (Zahlenfeld)

VertragsNummer (Berechnung)

Dazu habe ich folgende Formeln eigegeben:

Bei neuen Datensatz: lfdNr := last((select Vertrag).lfdNr) + 1

Im Berechnungsfeld (Vertragsnumer): "V" + text(year(today())) + text(month(today())) + text(lfdNr)

Sieht dann so aus: V201881….2….3. usw.

Bis dahin klappt alles prima.

Nun möchte ich aber die lfd. Nummer nicht in Endlopse fortführen, sondern bei Jahreswechsel (von z.B. 2018 auf 2019) wieder bei 1 beginnen lassen, also dann „V201911…2…3. usw“.

Mit einem Trigger unter Verwendung von max(select….. klappt dies ebenso wenig, wie mit dem last-Befehl.

Das Zurücksezten der lauf. Nummer, so dass bei einem Jahreswechsel diese wieder mit 1 beginnt, bekommer ich einfach nicht hin. 

Für einen Lösungsweg wäre ich sehr dankbar

3 Antworten

null
    • Leonid_Semik
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Manfred,

    dafür würde ich noch ein Datumsfeld Vertragsdatum anlegen mit Standardwert Heute.

    Die Formel für Tabellentrigger bei neu:

    ---

    let myYear := year(Vertragsdatum);
    lfdNr := max((select Vertrag)[year(Vertragsdatum) = myYear].lfdNr) + 1

    ---

    Bei Berechnungsfeld würde ich auf today() verzichten, sonst kriegst du jeden Monat alle Vertagsnummer auf diesen Monat umgeschrieben. Besser wäre dann:

    ---

    "V" + format(Vertragsdatum, "YYYYMM") + lfdNr

    ---

    Oder noch besser - Vertragsnumer als Textfeld erstellen und die Formel als Tabellen-Trigger on create:

    ---

    let myYear := year(Vertragsdatum);
    lfdNr := max((select Vertrag)[year(Vertragsdatum) = myYear].lfdNr) + 1;

    Vertragsnummer:="V" + format(Vertragsdatum, "YYYYMM") + lfdNr

    ---

    Warum es besser ist? Stell dir vor, du hast 3000000 Datensätze in der Tabelle. Beim Laden muss Ninox erst in jedem Datensatz die Vertragsnummer berechnen. Wenn es festgeschriebenen Texte sind, dauert es viel schneller.

     

    Leo

    • MReinert
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    super, danke für die rasche Hilfe. Manchmal sieht man eben den Wald vor lauter Bäumen nicht :-)

    • MReinert
    • vor 6 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,

    super, danke für die rasche Hilfe. Manchmal sieht man eben den Wald vor lauter Bäumen nicht :-)

Content aside

  • vor 6 JahrenZuletzt aktiv
  • 3Antworten
  • 1374Ansichten