Domino 9 und frühere Versionen > ND6: Entwicklung

Datumswert auslesen

(1/3) > >>

schikoli:
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

gossifu:
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

schikoli:
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

gossifu:
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   

koehlerbv:
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

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln