0

Trigger bei neuem Datensatz - Zählung ab fester Zahl

Moin liebe Community, 

 

Ich habe eine Tabelle mit 1500 importierten Datensätzen. 

Mein Trigger bei neuem Datensatz:

let myLast := max((select '4 Käuferinnen'). number (substr (Nummer, 3))) ;

Nummer := format (myLast + 1, "00000")

der gibt zwar eine fortlaufende Nummer aus. aber wie erstelle ich nun fortlaufend ab Nummer zB 1500 den nächsten Datensatz mit der Nummer 1501 automatisch?

 

danke im Voraus :)

Sascha

6 Antworten

null
    • Ninox-Professional
    • planoxpro
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Hallo Sascha, ich verstehe das Problem nicht. Haben die importierten Datensätze keine "Nummer"? Die könnte man per Script auch nachträglich vergeben. Oder man vergibt einfach manuell dem letzten vorhandenen Datensatz bspw. die "01500", dann wird die nächste automatisch "01501" sein.

    Nebenbei: Vielleicht war es nur ein schnell zusammengestricktes Beispiel, aber die beiden zitierten Code--Zeilen passen insofern nicht zusammen, als dort die laufende Nummer mit dem substr() ab Pos. 3 ermittelt wird, die gesamte Nummer also offenbar noch einen dreistelligen Präfix enthält ("xxx01500"). Dem Feld "Nummer" wird dann aber nur die laufende Nummer "01501" zugewiesen. Damit funktioniert das max() aber natürlich nicht

      • Sascha040
      • vor 1 Jahr
      • Gemeldet - anzeigen

       moin planox,

      ja ich hab das Beispiel erstellt. aber funktionieren tut es tatsächlich nicht - anbei screenshots.

      Ich habe ein Feld: 'Vertrags-Nr' (es ist vom Feldtyp ZAHL) - diese Nummern sollen fortlaufend sein und waren importiert. Den genannten Code habe ich aus diversen Templates rauskopiert und nur meine Tabelle/Feld eingetragen. Mir ist klar das "Substr" keinen sinn macht - aber ich weiss nicht wie Ichs anders schreiben soll.

      Die nächste leere Zeile soll also die Vertragsnummer 1296 bekommen und auf und absteigend sortiert werden können. 

      Ich hoffe so ist zumindest die Frage klar geworden. Danke dir.

      LG

      Sascha

      • Ninox-Professional
      • planoxpro
      • vor 1 Jahr
      • Gemeldet - anzeigen

       

      Ah, okay. Dann gilt, was Ronald gesagt hat: substr() ist hier fehl am Platze, weil es sich auf Strings bezieht. Und auch das format() ist überflüssig, da es Zahlen in Strings konvertiert. Wenn 'Vertrags-Nr' also ein Feld vom Typ Zahl ist, dann sollte es so funktionieren:

      'Vertrags-Nr' := max((select TABELLENNAME).'Vertrags-Nr') + 1
      
      • Sascha040
      • vor 1 Jahr
      • Gemeldet - anzeigen

       Super! funktioniert - Problem behoben.

       

      Danke Planox, danke Ronald - für eure Zeit.

    • + Maßanzug statt Massenware +
    • RonaldP
    • vor 1 Jahr
    • Gemeldet - anzeigen

    Moin ,

    so ganz verstehe ich deine Ausgangssituation noch nicht.

     said:
    der gibt zwar eine fortlaufende Nummer aus

     die zählt bei 1 los statt 1501?

     said:
    (substr (Nummer, 3))

     wenn in dem Feld nur Ziffern sind, brauchst du hier kein substr. Das ist nur nötig, bei z.B. Rechnungsnummern mit RG-12345 um das "RG-" zu entfernen um mit der verbleibenden Zahl hochzählen zu können.

    VG Ronald

      • + Maßanzug statt Massenware +
      • RonaldP
      • vor 1 Jahr
      • Gemeldet - anzeigen

      Ah Planox.pro war auch schon am Start ;-)