0

Fortlaufende Nummer

Hallo,

ich habe ein Fotoalbum als Untertabelle der Tabelle "Kunden" angelegt. Für jeden Kunden existiert zukünftig eine unterschiedliche Anzahl bon Fotos.

1. Ich möchte nun eine fortlaufende Nummer erstellen, die kundenspezifisch ist. 

Der Jahreswechsel sollte berücksichtgt werden, aber nicht die fortlaufende Nummer

So sollte es ungefähr aussehen

                                     fortlaufende Nr.

Customer A Picture 1   = 2021- 0001- 0001

Customer A Picture 2   = 2021- 0002- 0002

Customer A Picture 3   = 2022- 0003- 0003

Customer A Picture 4   = 2022- 0004- 0004

………………………………………………. 

Customer B Picture 1   = 2021- 0001- 0005

Customer B Picture 2    = 2022- 0002- 0006

………………………………………………. 

Customer C Picture 1   = 2021- 0001- 0007

Customer C Picture 2  = 2021- 0002- 0008

Customer C Picture 3  = 2021- 0003- 0009

Vielen Dank im Voraus

Andreas

6 Antworten

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

    Möglichkeit: Trigger "Bei neuem Datensatz ..." in der Untertabelle "Fotoalbum" (die fortlaufende Nr heißt hier "BildNr"): 

     

    let myK := Kunden;
    let myY := format(today(), "YYYY");
    let cMax := max((select Fotoalbum where substr(BildNr, 0, 4) = myY and Kunden = myK).number(substr(BildNr, 5, 4)));
    let aMax := max((select Fotoalbum where substr(BildNr, 0, 4) = myY).number(substr(BildNr, 10, 4)));
    BildNr := myY + "-" + format(cMax + 1, "0000") + "-" + format(aMax + 1, "0000")

    • Robin_Schunk
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo,

    Habe einem Ähnlichen fall mit Artikelnummern.

    z. B. A-00054

    Ist es möglich auch Lücken zu finden bedeutet wenn z.b. Artikel A-00030 gelöscht wird, der nächste nicht fortlaufend A-00055 ist, sondern die Lücke von A-00030 besetzt?

    in der gleichen Tabelle sind aber auf Artikel mit selber laufender Nummer aber unterschiedliche Präfix z.b. A-00030 und O-00030 oder VB-00030.

    Top wäre es z.b., wenn ich z.b. nur A- oder VB- in das Artikelfeld eingeben muss und dann per Button die Nummer automatisch vervollständigen lasse.

     

    Finde leider keinen wirklichen Ansatz wie ich das angehen sollte.

     

    Vielen Dank und Grüße

    Robin

    • neon_scarf
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter vielen Dank für Deine Hilfe.

    Die Formel funktioniert leider nur bedingt. 

    Das Jahr wird einwandfrei angezeigt   2021

    Die fortlaufende Nummer über alle Datensätze funktioniert auch einwandfrei.   0001,0002........... 0099

    Der indiduelle zweite Ziffernblock (der wie bei einer Rechnungsposition sein sollte) bleibt bei immer bei 0001, auch wenn ich neue Datensätze (Bilder) beim selben oder auch einem anderen Kunden hinzufüge. 

    VG

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

    Hm. Hab's gerade probiert. Bei mir funktioniert's. Ich bin von einem Nummernaufbau ohne Leerzeichen ausgegangen, also 2021-0000-0000. 'Kunden' ist der Name des Verknüpfungsfeldes mit der gleichnamigen Tabelle. Und dieses Feld muss natürlich einen Wert haben, weshalb neue Foto- Datensätze nur aus der übergeordneten Tabelle 'Kunden' heraus erstellt werden können, nicht direkt in der Untertabelle.

     

    @Robin: "Gelöschte Nummern neu vergeben" ist immer wieder mal Thema hier im Forum. Zuletzt im Dezember. Vielleicht hilft der entsprechende Thread schon mal weiter:
    https://ninox.com/de/forum/technische-hilfe-5ab8fe445fe2b42b7dd39ee8/durchlaufende-nummerierung-auf-grundlage-des-datenfelds-auswahl-interne-produkt-id-5fbb9b08a338a87d6a6bb874?post=5fe9f0555d183e6db543ab4f&page=2

    • neon_scarf
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Copytexter, ich habe das rauf und runter probiert. Ich bekomme nur dieses Ergebnis

    2021-00001-00001

    2021-00001-00001

    2021-00001-00001

    Die Formel habe ich nur hinsichtlich Anzahl der Nullen verändert

    let myK := Kunden.'Kunden-Nr.';
    let myY := format(today(), "YYYY");
    let cMax := max((select 'Photo Album' where substr(BildNr, 0, 4) = myY and Kunden.'Kunden-Nr.' = myK).number(substr(BildNr, 5, 4)));
    let aMax := max((select 'Photo Album' where substr(BildNr, 0, 4) = myY).number(substr(BildNr, 10, 4)));
    BildNr := myY + "-" + format(cMax + 1, "00000") + "-" + format(aMax + 1, "00000")

    Hast Du noch eine Idee für mich

    Danke und VG

    Andreas

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

    Mit der Anzahl der Nullen ändern sich auch Startposition und Länge der Zeichenfolgen, die mit der Funktion substr() ausgelesen werden. Statt "substr(BildNr, 5, 4)" müsste es also "substr(BildNr, 5, 5)" heißen, und aus "substr(BildNr, 10, 4)" würde "substr(BildNr, 11, 5)".