0

Nummer für Rechnungspositionen automatisch generiere

Hallo,
ich habe folgendes schon mal selbst hinbekommen! STOLZ!
Eingetragen in der Tabelle Rechnungsposition -> Bei neuem Datensatz folgendes Skript ausführen
“Pos. Nr.” := format(cnt(select Rechnungspositionen), “000”)

Klappt auch, aber natürlich zählt er komplett durch. Eigentlich will ich aber, dass er bei einer neuen Rechnung wieder mit 1 anfängt. Wie kann ich das bewerkstelligen?

Viele Grüße
Michael

9 Antworten

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

    Hallo Michael, mit deiner Formel werden immer sämtliche Positionen aller Rechnungen gezählt. Es sollen aber nur die Positionen gezählt werden, die zu einer bestimmten Rechnung gehören. Man müsste deshalb beim “select” einen entsprechenden Filter setzen. Ich vermute mal, dass “Rechnungspositionen” eine Untertabelle von “Rechnungen” (o. ä.) ist. Dann könnte man es so versuchen:

     

    let myRE := number(Rechnungen);
    format(cnt(select Rechnungspositionen where number(Rechnungen) = myRE), “000”)

     

    Eine andere Möglichkeit wäre, die Nummer der Position nicht als Trigger “Bei neuem Datensatz” zu erzeugen, sondern mit einem Funktionsfeld in den Rechnungspositionen zu berechnen. Dann hätte man immer eine durchgehende Nummerierung, auch wenn man mal eine Position löscht:

     

    let myRE := number(Rechnungen);
    let myPos := number(Nr);
    format(cnt(select Positionen where number(Rechnungen) = myRE and number(Nr) <= myPos), “000”)

    • Michael_Engelhardt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Super, danke für die Alternativen. Ich werde beide mal ausprobieren. Bin leider NOCH nicht so fit in den NX funktionen und coding.

    • Michael_Engelhardt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Die Variante mit dem Funktionsfeld, gefällt mir besser. Folgendes habe ich jetzt in das neue Feld “Pos” eingefügt

    let myRE := number(Rechnungen);
    let myPos := number(Pos);
    format(cnt(select Rechnungspositionen where number(Rechnungen) = myRE and number(Pos) <= myPos), “000”)

    Leider bringt der Editor jetzt die Fehlermeldung: Symbol erwartet: ) in Zeile 3, Spalte 101. Ich verstehe nicht, warum er dort eine Klammer will?

    Gruß
    Michael

    • RMS Immobilière
    • Arsene_Nickels
    • vor 4 Jahren
    • Gemeldet - anzeigen

    hinter myPos kommt keine Klammer

    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Die Klammer müsste korrekt sein, aber statt “Pos” muss es hier tatsächlich “Nr” heißen, denn das ist immer die interne Datensatznummer. Versuch“s mal so:

     

    let myRE := number(Rechnungen);
    let myPos := number(Nr);
    format(cnt(select Rechnungspositionen where number(Rechnungen) = myRE and number(Nr) <= myPos), ”000“)

    • Michael_Engelhardt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Die Fehlermeldung bleibt leider die Gleiche.

    Symbol erwartet: ) in Zeile 3, Spalte 100 -> Das wäre direkt hinter der dritten 0

    • Michael_Engelhardt
    • vor 4 Jahren
    • Gemeldet - anzeigen
    • Ninox-Professional
    • planoxpro
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Falls das Skript per Copy and Paste in den Ninox-Editor übertragen wurde, müssten die Anführungszeichen noch mal neu eingetippt werden. Das ist leider notwendig, weil sie hier im Forum falsch formatiert werden.

     

    Dass das Bild nicht angezeigt wirs, ist ebenfalls ein Bug des Forums.

    • Michael_Engelhardt
    • vor 4 Jahren
    • Gemeldet - anzeigen

    @Copytexter! Danke jetzt geht“s. Tolles Forumsfeature. :-(