0

automatisierte Belegnummern

Hallo Zusammen,

stehe komplett auf dem Schlauch und komme nicht weiter.

Mein aktueller Code:

let myYear := year(today());
let Belegnummer := max((select Belege where year(Datum) = myYear).substr(Belegnummer, 8));
Belegnummer := "RE-" + myYear + "-" + format(number(Belegnummer) + 1, "0000");
Datum := today()

Meine Tabelle heißt Belege

In der Belegwahl habe ich ein Auswahlfeld mit AG für Angebot, AB und Auftragsbestätigung, RG für Rechnung und SR für Stornorechnung.

Unter Belegnummer schaffe ich es über das Auswahlfeld die Kürzel zu bekommen, jedoch werden keine fortlaufenden Nummern generiert.

Vielen Dank vorab für Eure Hilfe

Viele Grüße

Timm

7 Antworten

null
    • Patrik_Ronschke
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Moin,

    für die Variable kannst du nicht den gleichen Namen, wie für das Feld nehmen. Du musst die Variablen immer eindeutig bennen.

    let myYear := year(today());
    let Belnr := max((select Belege where year(Datum) = myYear).substr(Belegnummer, 8));
    Belegnummer := "RE-" + myYear + "-" + format(number(Belnr) + 1, "0000");
    Datum := today()
    

    So sollte es funktionieren.

    • timm_goettschkes
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Super, danke Dir.  Der Grundsatz funktioniert. Jetzt vermute ich liegt mein Fehler wohl eher in der Funktion auf dem Auswahlfeld:

    Belegnummer := if Belegwahl = 1 then
            "AG-"
        else
            if Belegwahl = 2 then
                "AB-"
            else
                if Belegwahl = 3 then "RG-" else "SR-" end
            end + substr(Belegnummer, 4)
        end

    In dem Moment wo ich auf eine andere Auswahl ändere, wird die Nummer rausgeschmissen...

    Hast Du hierzu auch eine Idee?

    Besten Dank im Voraus

      • Patrik_Ronschke
      • vor 2 Jahren
      • Gemeldet - anzeigen

      timm. goettschkes 

      Ja, in dem Moment wo du das Auswahlfeld änderst, sagst du dem Feld "Belegnummer", dass es einen Wert annehmen soll entweder "AG-", "AB-", "RG-" oder "SR-".

      Was soll das Auswahlfeld denn bewirken?

       

      Sonst lad doch gerne mal eine Musterdatenbank in das Webniar-Team hoch.

       

      Viele Grüße

    • timm_goettschkes
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich würde mir ähnlich wie in dem Standardtemplate von Ninox vorstellen, dass ich von Angebot auf Auftragsbestätigung, Rechnung, etc. immer die gleiche Nummer verwende. Lediglich mich dem Unterschied, dass sich eben die Nennung AG, RG, etc. vor der Belegart ändert, die Nummer aber gleich bleibt.
    Vermutlich eine simple Frage. Aber bin vor ca. einem Jahr glücklicherweise in Gänze auf Apple umgestiegen und würde mich in Access vermutlich eher zurecht finden.
    Weitere Frage, wie kann ich hier was in ein Team hochladen. Muss ich mich dafür zusätzlich registrieren?

      • Patrik_Ronschke
      • vor 2 Jahren
      • Gemeldet - anzeigen

      timm. goettschkes 

      Für das Webniar Team kannst du einfach eine E-Mail an support@ninox.com schreiben, die Laden dich dann in das Team ein, dort findest du jede Menge Beispieldatenbanken.

       

      Zu deinem Problem:

      Wo generierst du denn die Rechnungsnummern?

      Am besten wäre dieser hinter dem Auswahlfeld zu generieren, wenn sich je nach Art die vorderen beiden Buchstaben ändern sollen. Ninox muss ja quasi erst wissen, was die ersten beiden Buchstaben sein sollen, bevor die Nummer generiert wird.

      Eine weitere Möglichkeit wäre für jedes Kürzel einen Button einzurichten, die erste Lösung finde ich allerdings eleganter.

      • Patrik_Ronschke
      • vor 2 Jahren
      • Gemeldet - anzeigen

      Patrik Ronschke 

      Schau mal, ob dir das so weiterhilft bzw. das macht, was es soll.

    • timm_goettschkes
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hi Patrik, Dein Gedanke war anders, bzw. vermutlich konnte ich mich nicht ganz glücklich ausdrücken. Wobei auch Dein Ansatz sehr interessant ist....

    Ich habe es jetzt wie folgt gelöst:

    Funktion auf der Belegauswahl:

    Belegnummer := if Belegwahl = 1 then
            "AG-" + substr(Belegnummer, 3)
        else
            if Belegwahl = 2 then
                "AB-"
            else
                if Belegwahl = 3 then "RG-" else "SR-" end
            end + substr(Belegnummer, 3)
        end

     

    Funktion in der Tabelle

    let myYear := year(today());
    let Belnr := max((select Belege where year(Datum) = myYear).substr(Belegnummer, 8));
    Belegnummer := "AG-" + myYear + "-" + format(number(Belnr) + 1, "0000");
    Datum := today()

    Bekomme somit jetzt eine neue Belegnummer und kann die Belegnummer beibehalten, wenn ich die Belegart verändere.

     

    In jedem Falle nochmals vielen Dank für Deine Unterstützung, Deine Mühen und Dein schnelles Feedback.

    VG

    Timm

Content aside

  • Status Answered
  • vor 2 JahrenZuletzt aktiv
  • 7Antworten
  • 68Ansichten
  • 2 Folge bereits