0

Rechnungs-Nr.

Hallo,

ich benötige eine Rechnungs-Nr. in folgender Form   "Re-2019-xxx"

Das Jahr (2019) soll automatisch immer das aktuelle Kalenderjahr sein und

die dreistellige Nr. (xxx) soll beim anlegen eines neuen Datensatzes automatisch

hochgezählt werden und auch automatisch bei Änderung des Jahres wieder zurück gesetzt werden.

 

Für gute Tipps bin ich dankbar.

Gruß Oli

5 Antworten

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

    Hallo Oli, dazu gibt es verschiedene Möglichkeiten, eine davon ist folgende:

     

    RECHDATUM := today();
    let RechJahr := year(RECHDATUM);
    let NeueNr := cnt(select RECHNUNGEN where year(RECHDATUM) = RechJahr) + 1;
    RECHNR := "RE-" + text(RechJahr) + "-" + format(NeueNr, "000")

     

    Die Bezeichnungen in Großbuchstaben sind Feld- bzw. Tabellennamen und müssten ggf. durch die tatsächlichen Namen ersetzt werden.

    • harzerfuchs
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter,

    irgenwie kommen ich nicht  zum Ziel...

    meine Tabelle heist "Rechnungen" und dort habe ich unter anderem die Felder "Rechnungs-Nr." und "Datum" ...

     

    ich habe jetzt folgendes eingegeben ...

    Datum := today();
    let RechJahr := year(Datum);
    let NeueNr := cnt(select Rechnungen where year(Datum) = RechJahr) + 1;
    'Rechnungs-Nr.' := "RE-" + text(RechJahr) + "-" + format(NeueNr, "000")

     

    ich habe zwar keine Fehlermeldung im script, bekomme aber keinen Eintrag bei der Rechnungs-Nr.

    beim erstellen eines neuen Datensatzes.

     

    Gruß Oli

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

    Moin Oli. Seltsam, bei mir funktioniert's (Cloud und Mac-App), hab's gerade noch mal durchlaufen lassen. Und ich sehe da auch keinen Fehler.

     

    Du hast den Code ja sicher auch in den Optionen der Tabelle 'Rechnungen' unter "Bei neuem Datensatz folgendes Script ausführen" geschrieben. Und er enthält nur die vier Zeilen, oder steht noch was anderes mit drin? Auf welcher Plattform arbeitest du?

     

    Man könnte den Code testweise mal auf einen Button legen und per dialog() nach jeder Zeile das Ergebnis anzeigen lassen. Also im Formular der Tabelle 'Rechnungen' ein Gestaltungselement 'Schaltfläche' platzieren und folgenden Code eingeben:

     

    let NeueRe := (create Rechnungen);
    NeueRe.(Datum := today());
    dialog("Datum", text(NeueRe.Datum), ["Ok"]);
    let RechJahr := year(NeueRe.Datum);
    dialog("RechJahr", text(RechJahr), ["Ok"]);
    let NeueNr := cnt(select Rechnungen where year(Datum) = RechJahr) + 1;
    dialog("NeueNr", text(NeueNr), ["Ok"]);
    NeueRe.('Rechnungs-Nr' := "RE-" + text(RechJahr) + "-" + format(NeueNr, "000"));
    openRecord(NeueRe)

     

    Und dann mal schauen, was dabei rauskommt. Ansonsten fällt mir jetzt nichts ein, was man noch überprüfen oder ändern könnte. Wie gesagt: Bei mir funktioniert der Code genau so.

    • harzerfuchs
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter,

     

    mit deinem "Button-Test" hab ich jetzt den Fehler gefunden, ich hatte das Feld als "Zahlenfeld" definiert und nicht als "Text", jetzt klappt es :-)

     

    Vielen Dank und ein schönes Wochenende.

    Gruß Oli

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

    👍