3 Antworten Neueste Antwort am Aug 1, 2016 3:01 AM von HLandschulz

    Zahl um eins erhöhen

    mengzi888

      Hallo,

       

      Ich habe folgendes Problem mit meiner Rechnungstellung.

       

      Folgendes Szenario

      Tabelle

      Rechnungen

      Felder     

      Text-Feld Rechnungs-Nummer

      Datumsfeld Rechnung_Datum

       

      Rechnungs_Datum wird mit dem Systemdatum befüllt mittels

      Hole ( SystemDatum )

       

      Rechnungs_Nummer sollte nun befüllt werden mit dem Text

      "Rechnung[Leerzeichen][aktuelle Jahreszahl]-[Leerzeichen]"

      dann sollte eine fortlaufende Zahl erscheinen mit folgenden Anforderungen

      1. Wenn ein neues Jahr beginnt, sollte die erste Rechnung im Jahr mit "1" beginnen

      2. Während des Jahres sollte die Zahl bei jeder neuer Rechnung um "1" erhöht werden.

       

      Folgende Lösung

      "Rechnung"

      & " "

      & Jahreszahl ( Hole ( SystemDatum ) ) 

      & "- "

      & Wenn ( Jahreszahl ( Hole ( SystemDatum )) > Jahreszahl ( Max (Rechnungs_Datum)); "1"; FortlNrInTextÄndern ( Rechnungs_Nummer; 1 ))

       

      Leider funkioniert die Erhöhung der Zahl nicht.

      Hat jemand eine Idee ?????

       

      Vielen Dank

        • 1. Re: Zahl um eins erhöhen
          Markus Schneider

          Doppelter post?

           

          Felder mit diesen 'Hole-Funktionen' sollten 'nicht gespeichert' sein, Max() wuerde ich hier nicht nehmen, besser in einem Startscript einbauen, kann besser kontrolliert werden. Kann zB mit einem Hilfsfeld fuer das aktuelle Jahr fuer die Rg-Nr gemacht werden (ev auch Hilfstabelle)

          • 2. Re: Zahl um eins erhöhen
            Markus Schneider

            Nachtrag: Wir haben aehnliche Berechnungen fuer Rg-Nr bei Kundenloesungen vorgefunden -> die irgendwann (Migration..) nicht mehr den erwarteten Wert hatten. Daher der Ansatz mit einem script (debugger)

            • 3. Re: Zahl um eins erhöhen
              HLandschulz

              Hallo,

               

              Du brauchst ein weiteres Feld Rechnungsnr_lfd und ein Feld Jahr (= Jahreszahl vom Datum)

              ich setze Rechnungsnummern beim Drucken über den Scriptbefehl "Feldwert setzen" und die SQL-Anweisung

               

              SQLAusführen (

              "SELECT Max ( Rechnungsnr_lfd ) FROM Rechnungen WHERE Jahr =? " ;

              "";"";

              Rechnungen::Jahr

              )

              + 1

               

              Heike