0

Plötzlich auftretendes Problem mit Erstellung der Kundennummer

Hallo zusammen,

Ich habe, dank eurer Hilfe hier, eine recht passable Datenbank 'zusammengebastelt' (mit noch sehr viel Luft nach oben). Nun ist beim berühmten Vorführeffekt folgendes, sehr kurioses Problem aufgetreten:

An dieser Stelle nochmals ein großen Dank an Copytexter, der mir in diesem Fall damals mit viel Geduld und Wissen geholfen hat, eine bestimmte Kundenummer zu erstellen.

Funktioniert einwandfrei, bis auf (wahrscheinlich ein Bug) folgende Situation:

Die KundenNmmer soll aus einer Auswahl 'Status' (vier Auswahlmöglichkeiten) + PLZ + fortlaufende Nummer mittels Button erzeugt werden. Der Code dazu lautet:

 

if Status and PLZ then
let myKNr := text(number(Status)) + substr(PLZ, 0, 2);
let myMaxNr := last(((select Kunden where substr(Kundennummer, 0, 3) = myKNr) order by Nr).Kundennummer);
let myLNr := number(substr(myMaxNr, 4, 4)) + 1;
Kundennummer := myKNr + "-" + format(myLNr, "0000")
else
if Status then
alert("PLZ fehlt!")
else
if PLZ then
alert("Status fehlt!")
else
alert("Status und PLZ fehlen")
end
end
end

 

Wie geschrieben, alles funktioniert gut, ausser dass bei Status 1 und der PLZ beginennd mit 63, die Kundennummer bei 163-0002 nicht mehr weiterzählt. Es bleibt bei 163-0002.

Alle anderen Möglichkeiten, sei es zB Auswahl 2 + PLZ 63 oder Auswahl 1 + PLZ 40 funktioniert perfekt.

 

Hat jemand eine Idee, woran das liegen könnte?

 

Gruß Kruna

5 Antworten

null
    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ahoi, ich weiß nicht, was da los sein kann - mir ist gestern allerdings bei einer ähnlichen Aufgabe aufgefallen, dass - so wie bei dir in Zeile 3 - "order by Nr" zu falschen Ergevbnissen führt.

    Ninox sortiert dann nämlcih so:

    1,11,100,2,20,22,250,...88,90,91

    die vermeintlich letzte Ninox-ID mit der Nr 250 ist dann nämlich nicht über last() zu erreichen, sondern die 91.

     

    Setz mal "order by number(Nr)" ein bei Dir - vielleicht hängt es damit zusammen...

    • Kruna
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Tobias,

     

    Klasse, das hat geklappt!!! TAUSEND DANK!

    Nur noch eine Frage aus Interesse: Ich habe gestern eine ältere Datenbank 'herausgekramt', einfach um zu sehen, ob das schon immer so war oder ob es irgendwann, irgendwo zu einem 'Konflikt' gekommen sein muss. Und bei einer älteren DB war alles ok. Das ist doch komisch oder? Aber eigentlich ist es egal, hauptsache es finktioniert jetzt! Es wäre müßig herauszufinden wann, wo und wie dieser Konflikt zustande gekommen sein könnte.

    Nochmals vielen Dank!!!!

     

    Gruß Kruna

    • T_Bartzsch
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Na das freut mich - ich bin da - wie gesagt - zufällig drüber gestolpert und dachte eigentlich auch, dass "order by Nr" reichen sollte...

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

    Moin Leute, ich erinnere mich nicht mehr genau, ob es vorher mal anders war, aber tatsächlich ist es schon seit langem so, dass man number(Nr) nutzen muss, um die Datensatznummer als Zahl zu bekommen. Ohne number() wird die Ziffernfolge als String zurückgegeben. Und dann wird halt falsch sortiert. Das kann man einfach überprüfen, indem man ein Funktionsfeld erstelt und da einmal nur "Nr" und einmal "number(Nr)" reinschreibt. Bei ersterem steht die Ziffernfolge linksbündig (Text), bei letzterem rechtsbündig (Zahl).

    • Kruna
    • vor 3 Jahren
    • Gemeldet - anzeigen

    Ich habe gerade mal geschaut, es war im März 2020, als ich hier nach der Erstellung der Kundennummer gefragt hatte.

    Ist ja auch wirklich egal. Wichtig ist, das es jetzt funktioniert und ich finde die Hilfsbereitschaft hier im Forum ganz große Klasse!!!! Ihr seid wirklich super, DANKE!!

     

    Gruß

    Kruna