0

Laufende Nummer korrekt zählen mit max

Guten Morgen,

vielleicht kann mir hier noch einer mal dabei helfen.

Ich versuche gerade, meine Datenbak zu erweitern.

Dabei habe ich eine Tabelle Kommissionen mit einem Feld Kommission. In diesem Feld wird eine laufendende Nummer abhängig vom Jahr generiert.

Die Kommssion Nummer wird so erstellt:

 

let myYear := year(today());

let myID := max((select Kommissionen where number(substr(Kommission, 0, 4)) = myYear).number(substr(Kommission, 4, 4))) + 1;

Kommission := myYear + format(myID, “0000”)

 

Nun kommt eine neue Tabelle Angebote hinzu. Die Kommission Nummer aus meiner Tabelle Kommissionen soll übernommen werden, und mit einer laufenden zweistelligen Nummer ergänzt werden. Mit max select beim neuen Erstellen eines Datensatzes bekomme ich das ohne Fehlermeldung nicht hin.

Jetzt habe ich folgendes probiert: 

Nach Änderung folgendes Script ausführen:

if not “Angebot-Nr” then
let myID := cnt((select Angebote).“Angebot-Nr”);
“Angebot-Nr” := “AN-” + Kommissionen.Kommission + “-” + format(myID, “00”)
end

Das funktioniert. Allerdings wird immer über die ganze Tabelle Angebote hochgezählt, nicht aber in Verbindung mit der Tabelle Kommissionen. Das heißt z.B. erster Datensatz zur Kommission 2020_010 gibt dann 2020_010-01. Erster Datensatz zur Kommission 2020_099 wird dann 2020_099-02 und nicht 2020_099-01.

 

Ich wollte was in der Richtung beim neuen Datensatz folgendes Script ausführen:

let myID := max(select Kommissionen.Kommission);
“Angebot-Nr” := “AN-” + Kommissionen.Kommission + “-” + format(myID, “00”)

 

Wer kann mir hier mal einen Tipp geben? Verstehe nicht, wo ich den Denkfehler habe.

Vielen Dank im Voraus.

Dietmar

2 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Dietmar, auf welche Weise erstellst du denn ein neues Angebot? Direkt aus einem Datensatz der Kommission heraus? Und an welcher Stelle greift der Trigger “Nach Änderung”?

     

    Aber wenn ich es richtig verstehe, dann braucht man zum Generieren der Angebots-Nr zwei Informationen: Die Kommissionsnummer und die bisher höchste Angebots-Nr zu dieser Kommission. Demnach könnte man es bspw. so versuchen (nicht getestet, also ohne Gewähr):

     

    let myK := Kommissionen.Kommission;
    let myA := max((select Angebote where substr(“Angebot-Nr”, 0, 8) = myK).substr(“Angebot-Nr”, 8, 2));
    “Angebot-Nr” := myK + format(number(myA) + 1, “00”)

     

    Wobei die Feldbezeichnung Angebot-Nr natürlich in einfache Anführungszeichen gesetzt werden müsste. Durch einen Bug hier im Forum werden sie in doppelte umgewandelt.

    • Dietmar_Press
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter,

    vielen Dank für deine Hilfe. Das hat mir sehr geholfen.

    Musste das ein bißchen noch anpssen, aber so geht es:

     

    let myK := Kommissionen.Kommission;

    let myA := max((select Angebote where number(substr(“Angebot-Nr”, 0, 8)) = myK).number(substr(“Angebot-Nr”, 8, 2))) + 1;

    “Angebot-Nr” := myK + format(myA, “00”)

Content aside

  • vor 3 JahrenZuletzt aktiv
  • 2Antworten
  • 481Ansichten