0

Nicht vergebene 'Nummern' finden

Hallo, ich arbeite seit ca. 1 Jahr mit Ninox und bin begeistert über die Möglichkeiten. Nach vielen 'Forum'-Lesen komme ich nun nicht weiter und habe eine vielleicht ganz banale Anfänger-Frage:
eine importierte Kundentabelle 'Kunden' (aus FM) mit verschiedenen Kd-Nr.- Kreisen weist 'Lücken' auf. Also 'Kdnr' von 1000-2000 für Kunden "A" (z.B. Nr. 1222 nicht vergeben), 2000-3000 als Kunden "B" (z.B. Nr. 2578 nicht vergeben). Wie kann ich die nicht vergebenen 'Kdnr' finden? Zudem soll diese gefundene 'Kdnr' jetzt für eine Neukundenanlage verwendet werden, bzw. wenn keine Lücke mehr vorhanden ist eine fortlaufende Nr. im entsprechenden Nr.-Kreis erzeugt werden. 
Freue mich über jeden Tip.
Gruß Klaus

3 Antworten

null
    • Leonid_Semik
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Klaus,

    um die Auflistung aller "freien" Nummern zu bekommen kannst du folgende Formel in ein f(x) Feld schreiben:

    ---

    concat(for i in range(1000, 2001) do
    if cnt(select Kunden where 'Kdnr'= i) = 0 then
    i
    end
    end)

    ---

    Dementsprechend kannst auch die Kdnr vergeben:

    ---

    Kdnr:=first(for i in range(1000, 2001) do
    if cnt(select Kunden where 'Kdnr'= i) = 0 then
    i
    end
    end)

    ---

    Leo

    • Klaus_Fromhertz
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Leo,
    danke für die schnelle Antwort. Es funktioniert prima. Die leeren Nummern werden jetzt gefunden. Nun habe ich noch eine Frage. Durch die Übernahme der Daten ist das 'Kdnr'-Feld als TEXT-Feld deklariert. Wäre es sinnvoll, dies als NUMBER-Feld zu ändern oder ist dies nicht notwendig. Wenn ja, wie ändere ich das? 
    Wenn ich, wie in deiner Antwort, die Kdnr vergeben will, schreibt er mir 'diese Funktion kann keine Änderungen vornehmen'. Wie kann ich dem abhelfen?
    Gruß Klaus

    • Frank_Schafer
    • vor 5 Jahren
    • Gemeldet - anzeigen

    Hallo Klaus,

    das funktioniert auch, wenn Du bei einem Text-Feld bleibst. Du musst dann aber in der Funktion auch mit dem Typ Text arbeiten, z. B.:

    Kdnr:=first(for i in range(1000, 2001) do
      if cnt(select Kunden where 'Kdnr'= text(i)) = 0 then
        text(i)
      end
    end)

    Wenn deine Kundennumern auf Dauer numerisch bleiben sollen, dann bietet sich aber ein Feld vom Typ NUMBER an. Den Feldtyp kannst du nicht ändern, musst also ein neues Feld (mit anderem Namen) anlegen, die Daten per Massendatenänderung übernehmen und anschließend das alte Feld löschen (danach kannst du dann das neue Feld auch auf den "alten" Feldnamen 'Kdnr' umbenennen).

    VG Frank

Content aside

  • vor 5 JahrenZuletzt aktiv
  • 3Antworten
  • 1242Ansichten