0

HILFE!!! Datum berechnen

let myDATE := date(2020,10,20);
myDATE := myDATE + 7;
myDATE

Ergebnis:

26.10.2020

Wer kann da helfen?

 

26.10.2020

13 Antworten

null
    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hi, frederic. Dein Code ist korrekt. Zwischen dem 19.10 und 25.10 besteht ein Bug. Mirko

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

    Hallo, versuch's mal so:

     

    date(year(Datum), month(Datum), day(Datum) + 7)

      • privat.1
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Hallo, ist es auch möglich eine Variable zu addieren. Konkret geht es darum, das späteste Zhldatum mit Skontogewährung zu berechnen. Der Prozentsatz und die Anzahl an Tagen, innerhalb derer das Skonto gewährt wird, stehen in Feldern.

      let Skontodatum := date( year (Rechnungsdatum), month (Rechnungsdatum), day (Rechnungsdatum) + Skontotage)

      bringt einen Fehler.

      • Ninox-Professional
      • planoxpro
      • vor 6 Monaten
      • Gemeldet - anzeigen

       Welchen Fehler denn? Wenn das was steht von "Spalte nicht gefunden" oder so, würde ich die Namen der Datenfelder bzw. Variablen überprüfen. 

      Die Syntax sieht erst mal richtig aus. Wobei 'Rechnungsdatum' vom Typ "Datum" und 'Skontotage' vom Typ "Zahl" sein sollte. Auch das würde ich noch mal genau überprüfen.

    • mirko3
    • vor 4 Jahren
    • Gemeldet - anzeigen

    @Copytexter. Oh, danke für den korrekten Code. Da war ich wohl ein wenig voreilig. Bisher hatte Datum+x bei mir also nur zufällig überwiegend richtige Ergebnisse gebracht. Wieder etwas gelernt. Mirko

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

    Na ja, garantieren kann ich auch für nichts, aber bisher hat das als Workaround immer funktioniert.

    • VIFE_Virginia_Margarit
    • vor 4 Jahren
    • Gemeldet - anzeigen

    hallo Copytexter

    der schein trügt. Versuch mit dem Redultat ein Appointment zu berechen ... 

    appointment((Ergebnis,Zeit1),(Ergebnis,Z2)) 

    einmal vor Winterzeit dann anfangs Winterzeit.

    Ergebnis = 22.10.2020 und dann +7

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

    Hallo Virginia, man muss das Datum, zu dem man X Tage addieren will, wie beschrieben in seine Bestandteile zerlegen und die Addition bei day() vornehmen. Das müsste mit allen Feldern funktionieren, die ein Datum beinhalten, also auch Terminen und Zeitstempeln. Wenn man also einen Termin für den 20.10.2020 plus 7 Tage berechnen will, dann sollte das bspw. so korrekt funktionieren (mit Variable, weil übersischtlicher):

    let myDate := date(year(Termin), month(Termin), day(Termin) + 7);
    appointment(myDate + time(14, 0), myDate + time(15, 0))

    Das Ergebis lautet: 27.10.2020, 14:00 - 15:00 Uhr

    • VIFE_Virginia_Margarit
    • vor 4 Jahren
    • Gemeldet - anzeigen

    hallo Copytexter

    in einer Schlaufe gegen sind

    Startdatum, Startzeit, Endzeit,Enddatum in Tabelle1.

    In Tabelle2 sollen diese Werte übernommen werden und zusätzlich aus  Startdatum, Startzeit, Endzeit,Enddatum ein Termin generiert eerden

    • Leonid_Semik
    • vor 4 Jahren
    • Gemeldet - anzeigen

    Hallo Virgina,

    ist es ein Problem oder eine Aufgabestellung? Es sollte so laufen:
    ---

    for i in select Tabelle1 do
    let new:=create Tabelle2;
    new.(Startdatum=i.Startdatum;
    Startzeit:=i.Startzeit;
    Enddatum:=i.Enddatum;
    Endzeit:=i.Endzeit;
    TERMINFELD:=appointment(datetime(i.Startdatum,i.Startzeit),datetime(i.Enddatum,i.Endzeit)))
    end

    ---

    Leo

    • myDPS.swiss GmbH
    • Fredric
    • vor 4 Jahren
    • Gemeldet - anzeigen

    hallo Leo

    hier den Code, den ich verwende:

    let myFerienVon := Objekte.UnterbruchFerien.von; "/// hier,it sollen Ferien berücksichtigt werden";
    let myFerienBis := Objekte.UnterbruchFerien.bis;
    let myFerien := myFerienVon + " bis " + myFerienBis;
    let mySTEP := Anzahl;
    let mySTART := abDatum;
    let Frage := dialog("ACHTUNG", "Planung generieren
    für Objekt : " + Objekte.'Obj-ID' + "
    Adresse : " + Objekte.ObjAdresse + "
    ab Datum : " + mySTART + if myFerienVon != null then
    "
    Ferien : " + myFerien
    end + "
    " + "Step : " + mySTEP, ["ok", "zurück"]);
    if Frage = "ok" then
    do as server
    let myDATE := date(2020, 10, 25); "/// Beginn Winterzeit - da keine Zeit zwischen 00:00 und 04:00 Zeit nicht berücksichtigt)";
    let my1LAUF := 0;
    let myNEXTDATE := abDatum; "/// Parameter von Tabelle 1: 1 Record enthält Abdatum, Frequenz, Wochentage und Weekendtage die berücksichtigt werden soll";
    let mySTART := abDatum;
    let myUSERSTART := abDatum;
    let me := Objekte;
    let myBEZ := Beschrieb;
    let my := this;
    let myEND := date(2021, 1, 14);
    let myVON := WoVon;
    let myBIS := WoBis;
    let myWON := WeVon;
    let myWBI := WeBis;
    if myWON != null then myVON := myWON end;
    if myWBI != null then myBIS := myWBI end;
    "// User Schlaufe RK M:N TAbelle, die User enthält, die für den Termin eingesetzt werden ";
    for i in select dummyPersonal where LKObjekt = my do
    let myUSER := i.Kontakte.Benutzer;
    mySTART := myUSERSTART;
    "// Objekt";
    "/// Job generieren";
    let myTEST := 0;
    while mySTART <= myEND do
    let myJOB := (create Jobs);
    myJOB.(Objekte := me);
    myJOB.(LTF := me.LTF);
    myJOB.(Bezeichnung := myBEZ);
    myJOB.(Beschreibung = null);
    myJOB.(Firmen := me.Firmen);
    myJOB.(Kontakte := me.Kontakte);
    myJOB.(Art := 1);
    myJOB.(Startdatum := mySTART);
    myJOB.(Startzeit := myVON);
    myJOB.(Endzeit := myBIS);
    "/// ohne diesen Zusatz sind die Termin ab 25.10.2020 falsch";
    if myTEST = 0 then
    myJOB.(Termin := appointment(datetime(mySTART, myVON), datetime(mySTART, myBIS)))
    else
    let myVONW := number(myVON) + 3600000;
    let myBISW := number(myBIS) + 3600000;
    myJOB.(Termin := appointment(datetime(mySTART - 1, myVONW), datetime(mySTART - 1, myBISW)))
    end;
    "/// Unterbruch / Ferien checken";
    if myFerienVon != null and myFerienBis != null then
    if myFerienVon <= mySTART and myFerienBis >= mySTART then
    myJOB.(Status := 17)
    else
    myJOB.(Status := 1);
    if mySTART < today() then myJOB.(Status := 6) end
    end;
    "///";
    myJOB.(Benutzer := myUSER);
    closeRecord();
    mySTART := mySTART + mySTEP;
    if mySTART >= myDATE and myTEST = 0 then
    mySTART := mySTART + 1;
    myTEST := 1
    else
    mySTART := mySTART
    end
    end
    end

    end;
    if my1LAUF := 0 then
    myNEXTDATE := mySTART + 7;
    my1LAUF := 1
    end;
    abDatum := mySTART
    end
    end

     

    LG

    • myDPS.swiss GmbH
    • Fredric
    • vor 4 Jahren
    • Gemeldet - anzeigen

    und nun habe ich ein weiteres Problem: Wenn ich die Daten öffne ist die Kalendansicht nur teilweise farblich und inhaltlich dargestellt. Muss dann auf Monat und dann wieder auf Woche switchen, um die richtige Darstellung zu haben (zweiter Bild).

    Auch wenn ich andere Tabellen verwende und dann den Kalender aufrufe, muss ich switchen.

    In der Kalendar Übersicht werden die Termine farblich nicht richtig angezeigt bzw garnicht ausgefüllt. Da muss ich 

    • myDPS.swiss GmbH
    • Fredric
    • vor 4 Jahren
    • Gemeldet - anzeigen