Autor Thema: Datumswert auslesen  (Gelesen 2808 mal)

Offline schikoli

  • Frischling
  • *
  • Beiträge: 15
Datumswert auslesen
« am: 02.01.06 - 12:26:07 »
Hallo,

ich habe in meiner Maske ein field Datum (type Date) und möchte die eingegeben Daten in die Kalenderwoche umrechnen.

Der Formelscript für die Berechnung der KW funktioniert mittels

D:=@TextToTime(@Prompt([OkCancelEdit];

Ich möchte aber aus einem normalen Datumsfeld, das Datum auslesen und anschließend berechnen. Wie lese ich nun Feldwerte aus?


D:= @thisvalue;

funktioniert leider nicht


REM {D := [31/12/95]};

FirstOfYear := @Date(@Year(D); 1; 1);
LastOfYear := @Date(@Year(D); 12; 31);
FirstDayNum := @Weekday(FirstOfYear);
LastDayNum := @Weekday(LastOfYear);
REM {ISO weeks start on Monday and ends on Sunday.};
ISOFirstDayNum := @If(FirstDayNum = 1; 7; FirstDayNum - 1);
ISOLastDayNum := @If(LastDayNum = 1; 7; LastDayNum - 1);
REM {The first and last ISO week is the first};
REM {and last ISO week to include Thursday};
IsFirstWeek := 7 - ISOFirstDayNum > 2;
IsLastWeek := 7 - ISOLastDayNum < 4;
REM {The date of the first day of the first ISO week};
ISOFirstDay := @If(IsFirstWeek;
@Adjust(FirstOfYear; 0; 0; 1 - ISOFirstDayNum; 0; 0; 0);
@Adjust(FirstOfYear; 0; 0; 8 - ISOFirstDayNum; 0; 0; 0));
REM {The date of the last day of the last ISO week};
ISOLastDay := @If(IsLastWeek;
@Adjust(LastOfYear; 0; 0; 7 - ISOLastDayNum; 0; 0; 0);
@Adjust(LastOfYear; 0; 0; -ISOLastDayNum; 0; 0; 0));
REM {Date outside ISOFirstDay and ISOlastDay};
REM {are from the previous or next year};
REM {Return the ISO week number and exit};
FirstWeekNextYear := @If(D > ISOLastDay; @Return(@Prompt([Ok]; "FWNY";
@Text(@Year(D)+1) + "W01")); NULL);

REM {I suspect this is where Julian dates would be useful};
REM {A recursive call could be used in a real language};
LastWeekLastYear := (D - @Adjust(FirstOfYear; -1; 0; 0; 0; 0; 0))/60/60/24/7;
AdjustLastWeek := 1 - (LastWeekLastYear - @Integer(LastWeekLastYear));
@Set("LastWeekLastYear"; LastWeekLastYear + AdjustLastWeek);
@If(D < ISOFirstDay;
@Return(@Prompt([Ok]; "LWLY"; @Text(@Year(D) - 1) + "W" +
@Text(LastWeekLastYear))); NULL);

REM {If you get this far, the date falls into an ISO week this year};
REM {Convert the difference in seconds to weeks};
NumWeeks := (D - ISOFirstDay)/60/60/24/7;

REM {Fractions indicate that the date falls};
REM {in the middle of the ISO week};
WeekAdjust := 1 - (NumWeeks - @Integer(NumWeeks));
ISOWeekNum := NumWeeks + WeekAdjust;

REM {Conform to ISO 8601 format};
Pad:=@If(ISOWeekNum<10;"0";"");
Result := @Text(ISOWeekNum);
 Result

 

Vielen Dank für Eure Hilfe

und

Gesundes neues Jahr

LG

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Datumswert auslesen
« Antwort #1 am: 02.01.06 - 12:37:45 »
Hallo,

wo steht diese Formel, in der Eingabeumsetzung?
Versuche doch anstatt des @ThisValue, den Feldnamen direkt.

Ich würde eine Hilfsfeld nehmen, in welches ich das Datum eintrage und
ein Feld in welchem ich mit Deiner Formel die KW berechne. Ich weiß nämlich
nicht, ob ein Datumsfeld die Umwandlung in die KW möchte.

mfg

Kjeld

Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline schikoli

  • Frischling
  • *
  • Beiträge: 15
Re: Datumswert auslesen
« Antwort #2 am: 02.01.06 - 12:44:23 »
ja das habe ich auch schon probiert, ich habe mit thisvalue auf

field Datum (type Date) zugegriffen

und hatte aber im field KW (typeText) den Formelcode für die Berechnung!

Dennoch thisvalue funktioniert nicht, ich glaube es liegt daran:

This @function returns null outside a field formula.

es muss doch aber eine funktion geben, mit der man aus einem feld einen wert ausliest und in einem anderen übernimmt und umrechnet

Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Datumswert auslesen
« Antwort #3 am: 02.01.06 - 12:47:50 »
Hallo,

aus der Hilfe:

Gibt den Wert des angegebenen Felds zurück.
Hinweis  Diese @Funktion gibt es ab Version 6.
Syntax
@GetField ( Feldname )
    Parameter
       Feldname
          Text. Der Name eines Felds im aktuellen Dokument.
       Rückgabewert
          Wert
          Der Wert des angegebenen Felds.

mfg

Kjeld   
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datumswert auslesen
« Antwort #4 am: 02.01.06 - 12:49:56 »
D := Datum (wenn das Feld mit dem Datumswert so heisst).

An den absoluten Basics würde ich aber dringendst arbeiten (und erst danach anfangen, mit fremden Code zu dealen).

Bernhard

Offline schikoli

  • Frischling
  • *
  • Beiträge: 15
Re: Datumswert auslesen
« Antwort #5 am: 02.01.06 - 13:10:44 »
Hallo Bernard, Gossifu

vielen Dank für deinen Tip, ich bin dabei die Basics aufzuarbeiten.
Leider geht das nicht von heute auf morgen, zumal Lotus Notes nicht mein berufl. Arbeitsschwerpunkt ist.

Was mache ich falsch?

D:= Datum;

oder

D:= @GetField (Datum);

ich bekomme jedes mal Fehlermeldung:

Incorrect data type for operator or @Function: Time/Date expected

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datumswert auslesen
« Antwort #6 am: 02.01.06 - 13:14:46 »
Ich vermute mal, das passiert genau in dem Moment, wenn ein neues Dokument angelegt wird? Die Formel zur Berechnung der KW kann natürlich nur ausgeführt werden, wenn ein gültiges Datum im entsprechenden Feld steht.

Offline schikoli

  • Frischling
  • *
  • Beiträge: 15
Re: Datumswert auslesen
« Antwort #7 am: 02.01.06 - 13:21:30 »
Hallo Bernard,

nein es funktioniert auch nicht, bei bereits existierenden Dokumenten, bei denen Daten im Feld Datum eingepflegt sind...

Offline smoki

  • Senior Mitglied
  • ****
  • Beiträge: 325
  • Geschlecht: Männlich
    • Smoki's Lotus Notes
Re: Datumswert auslesen
« Antwort #8 am: 02.01.06 - 13:25:28 »
Hallo!

Falls es sich beim Datums-Feld um ein Text-Feld handelt muss man noch @TextToTime verwenden!

Gruss
Chris

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datumswert auslesen
« Antwort #9 am: 02.01.06 - 13:27:49 »
Die naheliegendste Vermutung: Der Inhalt des Feldes Datum ist nicht vom Typ Datum/Zeit.

Innerhalb des Formelapparates im Feld für die KW kann man sich ja mal mit @Prompt Zeile für Zeile vortasten, um zu sehen, welche Inhalte überhaupt gegeben sind und an welcher Stelle genau die Formelabarbeitung wegen Fehler abgebrochen wird.

Bernhard

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Datumswert auslesen
« Antwort #10 am: 02.01.06 - 13:36:55 »
versuch mal:
Code
D:= @toTime(Datum);
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Re: Datumswert auslesen
« Antwort #11 am: 02.01.06 - 13:40:18 »
Dann stimmt aber diese Aussage nicht, wenn es mit @TextToTime bzw. @ToTime funktionieren würde:

ich habe in meiner Maske ein field Datum (type Date) ...

Offline schikoli

  • Frischling
  • *
  • Beiträge: 15
Re: Datumswert auslesen
« Antwort #12 am: 02.01.06 - 14:21:25 »
Hallo,

ich habe eben das feld Datum vom Typ Date/time auf Text gesetzt und

D:= @totime(Datum) definiert.

es werden auch so keine Werte ausgelesen bzw umgerechnet.

Bernard,

ich lasse jetzt wieder Datum als Type Date/time und field KW als Text.

ich habe leider noch nicht verstanden was du meintest mit, dass der Inhalt des Feldes Datum nicht vom Typ Datum/Zeit ist, denn als solchen habe ich ja das Feld Datum definiert.

Gibt es eine Art Debugging Fkt unter Lotus Designer?


Offline gossifu

  • Senior Mitglied
  • ****
  • Beiträge: 352
  • Geschlecht: Männlich
  • Dummheit schafft Freizeit
Re: Datumswert auslesen
« Antwort #13 am: 02.01.06 - 16:35:12 »
Hallo,

ich hab das mal nachgestellt, ein Datumsfeld 'Datum' und ein KW - Feld KW.

D habe ich mit

D:= @If(Datum = "";@Today;Datum);

berechnet. Rest deiner Formel genommen.

Funzt einwandfrei.

Kjeld

(

D:= @If(Datum = "";@Today;Datum);
REM {D := [31/12/95]};

FirstOfYear := @Date(@Year(D); 1; 1);
LastOfYear := @Date(@Year(D); 12; 31);
FirstDayNum := @Weekday(FirstOfYear);
LastDayNum := @Weekday(LastOfYear);
REM {ISO weeks start on Monday and ends on Sunday.};
ISOFirstDayNum := @If(FirstDayNum = 1; 7; FirstDayNum - 1);
ISOLastDayNum := @If(LastDayNum = 1; 7; LastDayNum - 1);
REM {The first and last ISO week is the first};
REM {and last ISO week to include Thursday};
IsFirstWeek := 7 - ISOFirstDayNum > 2;
IsLastWeek := 7 - ISOLastDayNum < 4;
REM {The date of the first day of the first ISO week};
ISOFirstDay := @If(IsFirstWeek;
@Adjust(FirstOfYear; 0; 0; 1 - ISOFirstDayNum; 0; 0; 0);
@Adjust(FirstOfYear; 0; 0; 8 - ISOFirstDayNum; 0; 0; 0));
REM {The date of the last day of the last ISO week};
ISOLastDay := @If(IsLastWeek;
@Adjust(LastOfYear; 0; 0; 7 - ISOLastDayNum; 0; 0; 0);
@Adjust(LastOfYear; 0; 0; -ISOLastDayNum; 0; 0; 0));
REM {Date outside ISOFirstDay and ISOlastDay};
REM {are from the previous or next year};
REM {Return the ISO week number and exit};
FirstWeekNextYear := @If(D > ISOLastDay; @Return(@Prompt([Ok]; "FWNY";
@Text(@Year(D)+1) + "W01")); NULL);

REM {I suspect this is where Julian dates would be useful};
REM {A recursive call could be used in a real language};
LastWeekLastYear := (D - @Adjust(FirstOfYear; -1; 0; 0; 0; 0; 0))/60/60/24/7;
AdjustLastWeek := 1 - (LastWeekLastYear - @Integer(LastWeekLastYear));
@Set("LastWeekLastYear"; LastWeekLastYear + AdjustLastWeek);
@If(D < ISOFirstDay;
@Return(@Prompt([Ok]; "LWLY"; @Text(@Year(D) - 1) + "W" +
@Text(LastWeekLastYear))); NULL);

REM {If you get this far, the date falls into an ISO week this year};
REM {Convert the difference in seconds to weeks};
NumWeeks := (D - ISOFirstDay)/60/60/24/7;

REM {Fractions indicate that the date falls};
REM {in the middle of the ISO week};
WeekAdjust := 1 - (NumWeeks - @Integer(NumWeeks));
ISOWeekNum := NumWeeks + WeekAdjust;

REM {Conform to ISO 8601 format};
Pad:=@If(ISOWeekNum<10;"0";"");
Result := @Text(ISOWeekNum);
 Result

)
Immer lustig und vergnügt, bis der A.... im Sarge liegt. ;-)

Offline flaite

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.966
    • mein del.icio.us
Re: Datumswert auslesen
« Antwort #14 am: 02.01.06 - 17:41:23 »
Dann stimmt aber diese Aussage nicht, wenn es mit @TextToTime bzw. @ToTime funktionieren würde:

ich habe in meiner Maske ein field Datum (type Date) ...
Wie du weisst, kann man nicht sicher sein, ob das Feld im Dokument tatsächlich date/time ist, nur weil das zufällig in der Maske steht.

Vielleicht noch auf nicht null überprüfen...
Code
@If(@IsNull(Datum); "";@toTime(Datum)): 
« Letzte Änderung: 02.01.06 - 17:49:23 von kennwort »
Ich stimm nicht mit allen überein, aber mit vielen und sowieso unterhaltsam -> https://www.youtube.com/channel/UCr9qCdqXLm2SU0BIs6d_68Q

---

Aquí no se respeta ni la ley de la selva.
(Hier respektiert man nicht einmal das Gesetz des Dschungels)

Nicanor Parra, San Fabian, Región del Bio Bio, República de Chile

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz