0

Berechnung vollkommen falsch nach Umzug von Datenbank

Hallo zusammen,

ich weiß leider gar nicht mehr weiter. Ich habe in meiner Entwicklungsumgebung eine Uhrzeitberechnung eingestellt, die mit einem zugehörigen Termin verbunden ist. Es geht um einen Start und einen Endtermin, der einerseits per Button berechnet werden und andererseits manuell nachher angepasst werden kann.

In meiner Entwicklungsumgebung funktioniert alles super: Wenn ich den Button drücke, wird die Anfangszeit berechnet und wenn ich diese verschieben will, wird das in das unsichtbare Terminfeld übernommen. Sobald ich aber die Datenbank unverändert in das Konto meines Clienten übertrage, klappt diese Berechnung gar nicht mehr. Auf einmal werden bei der Anfangszeit 2 Stunden abgezogen, nachdem kurz die korrekte Zeit aufploppt. Kommt sowas bei Umzügen öfters vor? Und wie kann man sich das erklären?

Vielen Dank im Voraus,
Markus

3 Antworten

null
    • mirko3
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Hallo Markus. Lebt Dein Client in einer anderen Zeitzone?

    • Markus_Weise
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Nein, er ist gleich im Nachbarort.
    Ich weiß zumindest, von welchen Formeln es abzuhängen scheint. Es geht um eine Fahrzeitberechnung. Man gibt in ein Uhrzeitfeld ein, wann man am Ziel (Ankunftszeit) sein will. Anhand dessen und der Strecke wird der Startzeitpunkt bestimmt und ein geblockter Zeitraum als Termin erstellt:

    let myURL := url("https://maps.googleapis.com/maps/api/distancematrix/json", {
                origins: Abholort,
                destinations: Ziel,
                mode: "car",
                key: "***"
            });
        let gcode := do as server
                http("GET", myURL)
            end;
        let km := number(first(first(gcode.result.rows).elements).distance.value) / 1000;
        Strecke := km;
        Fahrdauer := time(number(gcode.result.first(rows).first(elements).duration.value) * 1000);
        Abholzeit := if Fahrdauer != null then
                Ankunftszeit - Fahrdauer
            end;
        let myStart := datetime(Datum, Abholzeit);
        let myEnd := myStart + Fahrdauer;
        let next := appointment(myStart, myEnd);
        Termin:=next;

    Jetzt soll aber die Abholzeit für Flexibilität nachträglich anpassbar sein, z.B. um einen Zeitpuffer anzulegen. Natürlich soll der Termin bei der Änderung mit angepasst werden. Dafür wird bei Änderung der Abholzeit folgende Formel getriggert:

    let myStartDate := date(start(Termin));
    let myEnd := endof(Termin);
    Termin := appointment(datetime(myStartDate, Abholzeit), myEnd)
    

    In meiner Testumgebung funktionierte das wunderbar. Aber wenn ich jetzt die Abholzeit ändere, tut Ninox so, als ob die neue Abholzeit zwei Stunden in der Zukunft liegt. Weil das natürlich nicht mit der Endzeit des Termins passt, verschiebt sich die Zielzeit auf meine Abholzeit + 2Std und meine vormalige Zielzeit wird meine Abholzeit - klingt komisch ist aber so.

    Bsp: Der errechnete Termin geht von 12:36 Uhr bis 13:00 Uhr. Ich will die Abholzeit auf 12:20 Uhr anpassen: Auf einmal geht der Termin von 13:00 Uhr bis 14:20 Uhr, während die Uhrzeitfelder die korrekten Daten behalten.

    Und wie gesagt: In meiner Entwicklungsumgebung funktioniert es.

    • Markus_Weise
    • vor 2 Jahren
    • Gemeldet - anzeigen

    Ich habe nun zumindest eine annehmbare Lösung gefunden, indem ich mit dem gleichen Button zuerst prüfe, ob bereits eine Abholzeit existiert. Da funktioniert die Formel komischerweise.

    if Abholzeit != null then
        let myStartDate := date(start(Termin));
        let myEnd := endof(Termin);
        Termin := appointment(datetime(myStartDate, Abholzeit), myEnd)
    else
            let myURL := url("https://maps.googleapis.com/maps/api/distancematrix/json", {
                    origins: Abholort,
                    destinations: Ziel,
                    mode: "car",
                    key: "***"
                });
            let gcode := do as server
                    http("GET", myURL)
                end;
            let km := number(first(first(gcode.result.rows).elements).distance.value) / 1000;
            Strecke := km;
            Fahrdauer := time(number(gcode.result.first(rows).first(elements).duration.value) * 1000);
            Abholzeit := Ankunftszeit - Fahrdauer - 300000;
            Uhrzeit := Ankunftszeit;
            let myStart := datetime(Datum, Abholzeit);
            let myEnd := datetime(Datum, Ankunftszeit);
            let next := appointment(myStart, myEnd);
            Termin := next;
    

    Dann muss halt jedes mal per Button "bestätigt" werden, anstatt dass es sich live aktualisiert. Es ist mir trotzdem unerklärlich, wie eine 1:1 exportierte Datenbank auf einmal nicht mehr funktionieren kann...

Content aside

  • vor 2 JahrenZuletzt aktiv
  • 3Antworten
  • 60Ansichten
  • 1 Folge bereits