1

do as server - rechnet falsch seit letztem Update !!

Meine Berechnungen sind plötzlich nicht mehr richtig!

Seit dem neuesten Update liefern Abfragen nach "last" nicht den richtigen Datensatz!

Bei mir liefert die Abfrage

"let Abschluss := last(select Kassenbuchungen where tagesabschluss = true);  

den Datensatz  92 wenn es unter "do as server" läuft und 449 wen es lokal läuft.

Was kann man da eventuell einstellen?

2 Antworten

null
    • Icarus_Ralf_Becker
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Guten Morgen Peter, 

    nein, kann man nicht. Zum Hintergrund:

    Bisher bestand der "Bug", dass die Funktion nicht mathematisch sortiert, sondern alphanumerisch. Das bedeutet, eine 101 kann nicht nach der 99 sondern davon, denn die erste Ziffer "1" ist kleiner als die "9". Folglich führte last() immer zu falschen Werten, wenn im Array eine zusätzliche Ziffer dazu kam (99 zu 100, 999 zu 1000 usw.).

    In deinem Fall ist der Sprung von 99 zu 100 drin, wobei ich jetzt mal behaupten würde, dass die Datensätze mit den ID´s 93 bis 99 nicht mehr existieren.

    Diesen Bug scheint man nun behoben zu haben, aber nur wenn das Skript lokal läuft. Im do as server sagt die Funktion immer noch ein falsches Ergebnis, denn 9 > 4.

    Eben auf Grund dieser Fehler (und nunmehr eines halbgaren Bugfixes) ist es so besser geschrieben

    last(select Kassenbuchungen order by number(Nr))

    für den Datensatz, bzw.

    max((select Kassenbuchungen).number(Nr))

    für die reine ID

     

    VG

    Ralf

    • Icarus_Ralf_Becker
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich habe das Thema des halben Bugfixes mal an den Support herangetragen.