Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: aba am 06.01.03 - 09:36:43

Titel: Halbe und viertel Tage berechnen
Beitrag von: aba am 06.01.03 - 09:36:43
Hallo und ein erfolgreiches neues Notes Jahr wünsche ich!!

Ich habe vor dem Jahreswechsel etwas über Berechnung von Urlaubstage gelernt. Bei uns ist es aber notwendig auch halbe oder viertel Tage bereits einreichen zu können.

Ich habe zu diesem Zweck ein verstecktes Feld gemacht wo erst die Brutto Arbeitstage(feld A) berechnet werden. Zu dem gibt es noch ein weiteres Feld(feld B) wo eine "2" oder "4" eingetragen wird. Nun mein Problem. Ich möchte mit einer If Formel in einem dritten Feld (feld c)  folgendes berechnen.Wenn feld B = "2", dann 0,5; wenn feld B = "4" dann 0,75, diese hier ermittelten Werte sollen dann von feld A abgezogen werden und hier in feld C dargestellt. Aber mit If Then Else komme ich im Designer nicht so richtig vorwärts. Kann mir da jemand helfen????
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: Rob Green am 06.01.03 - 10:57:03
if then benötigst Du nicht mal, sondern schlicht

Formel in FeldC:

ARBEITSTAGE_NETTO:=
@if(
FeldB="";FeldA;
FeldB="0,5";FeldA*0,5;
FeldB="0,75";Feld*0,25;
etc...
);
...
FieldC:=ARBEITSTAGE_NETTO....
...
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: aba am 06.01.03 - 11:15:11
Hallo Rob Green,

danke für Deine Hilfe.

Ich habe das mal so gemacht:

@if (Teilung="";berur;
Teilung="0,5";berur-0,5;
Teilung="0,75";berur-0,75; )

allerdings meckert er dann immer die letzte Klammer an. Argumente für @ Funktion erwartet, aber nicht vorhanden: ')'

Teilung ist Feld B und berur ist Feld A. Diese Feld C heißt Urlaubstage und ist vom Typ Zahl und berechnet!!! Was ist verkehrt????
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: Rob Green am 06.01.03 - 11:48:30
mach mal das letzte Semikolon weg...das ist falsch, da Notes denkt, daß "berur-0,75; )" eine weitere WENN Bedingung ist, der eine DANN ODER zu folgen hat.

so nicht mehr (korrekte Version in Deinem Sinne)
@if (Teilung="";berur;
Teilung="0,5";berur-0,5;
Teilung="0,75";berur-0,75);
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: aba am 06.01.03 - 11:59:35
Tja ich hoffe ich nerve nicht aber nun kommt folgende Meldung

@If erfordert eine ungerade Anzahl von Argumenten: ')'

Hat das etwas mit den Feldtypen zu tun??
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: Rob Green am 06.01.03 - 12:08:56
an der Formel sehen ich keinen Fehler:
@if (Teilung="";berur;
Teilung="0,5";berur-0,5;
Teilung="0,75";berur-0,75);
Semikola korrekt, Klammern ok, tja...

Hau mal die ganze Formel rein...da ist doch bestimmt mehr im Feld C drin, oder?

Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: ata am 06.01.03 - 12:53:26
... die Fehlermeldung ist absolut ausreichend: ... @If erfordert eine ungerade Anzahl an Argumenten...

Wenn - dann
wenn - dann
wenn - dann
sonst

... maximal 99 eben

in der Formel oben fehlt das abschließende "sonst"...

ata
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: Rob Green am 06.01.03 - 12:56:07
*öhmmm...bingo...*

die letzte SONST fehlt...hab ich totalemente vergessen im eifer  ;D

@if (Teilung="";berur;
Teilung="0,5";berur-0,5;
Teilung="0,75";berur-0,75;
0);
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: ata am 06.01.03 - 12:59:21
... passiert mir im Eifer des Gefechtes auch schon mal - die Fehlermeldung kann man aber ernst nehmen...

ata  ;D ;D ;D
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: aba am 06.01.03 - 13:48:53
Hallo,

na da hätte ich ja auch selber drauf kommen können. Aber nun kommt immer 0,0 raus. Das Feld berur ist auch ein berechnetes Feld. Dort werden die Brutto Arbeitstage errechnet und von dem Wert soll dann ja entweder 0,5 oder 0,75 abgezogen werden!!

Is ja eigentlich nicht so schwierig aber nun rechnet er immer 0,0 aus!!
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: LordDestiny am 06.01.03 - 14:04:27
Hi aba,

der Fehler liegt vermutlich im Datentyp des Feldes Teilung. Die If-Formel funktioniert nur, wenn es ein Text-Item ist. Allerdings solltest Du sicherheitshalber die Formel wie folgt anpassen:

Bei Itemtype = Text:
@if (Teilung="0,5";berur-0,5;
Teilung="0,75";berur-0,75;
berur);

Bei Itemtype = Number:
@if (Teilung=0,5;berur-0,5;
Teilung=0,75;berur-0,75;
berur);

Gruss,
LD
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: aba am 06.01.03 - 14:11:59
Alles klar,

jetzt funktioniert es. Jetzt könnte mich noch jemand glücklich machen indem man mior verrät wie ich den 24.12. und den 31.12. als 0,5 Tage berechnet bekomme. eknori hat mal eine Feiertagsliste gepostet siehe
REM "Feiertagsliste";
holidayList := [01.01.2002]:[21.01.2002]:[18.02.2002]:[27.05.2002]:[04.07.2002]:[02.09.2002]:[14.10.2002]:[11.11.2002]:[28.11.2002]:[25.12.2002]:[26.12.2002]:[01.01.2003]:[20.01.2003]:[17.02.2003]:[26.05.2003]:[04.07.2003]:[01.09.2003]:[13.10.2003]:[11.11.2003]:[27.11.2003]:[25.12.2003]:[26.12.2003];

REM "Feiertagsliste nach Textliste wandeln"; usw.

hier jetzt noch 24.12. und 31.12. einbauen und diese mit 0,5 multiplizieren oder so. Hat da vielleicht noch jemand eine Idee?

Ansonsten bin jetzt schon super zufrieden und bis dies Jahr Weihnachten ist ja noch ein wenig!!!
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: LordDestiny am 06.01.03 - 14:19:33
Hm...

Nutzt Du die Form für eine Jahres-Gesamtübersicht oder für jeden Tag einzeln? Wäre für die Berechnung der Feiertage wichtig *nachdenk*
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: aba am 06.01.03 - 14:27:24
Ja das versteh ich jetzt nicht aber hier mal die Formel für das Feld berur. Dort wird die Feirtagsliste berücksichtigt.

REM "Feiertagsliste";
holidayList := [01.01.2002]:[21.01.2002]:[18.02.2002]:[27.05.2002]:[04.07.2002]:[02.09.2002]:[14.10.2002]:[11.11.2002]:[28.11.2002]:[25.12.2002]:[26.12.2002]:[01.01.2003]:[20.01.2003]:[17.02.2003]:[26.05.2003]:[04.07.2003]:[01.09.2003]:[13.10.2003]:[11.11.2003]:[27.11.2003]:[25.12.2003]:[26.12.2003];

REM "Feiertagsliste nach Textliste wandeln";
hl:=@Text(holidayList);

REM "Datumsteil Start/Ende extrahieren und nach Textliste wandeln";
startDate := @Text(@Date(startDate));
endDate := @Text(@Date(endDate));

REM "Aus Start/Ende DateRange im Textformat montieren";
range := @TextToTime(startDate + "-" + endDate);

REM "Auflösen des Start/Ende-Range in Datumswerte";
r2:=@Explode(range);

REM "Datumswerte in Textliste wandeln";
r3:=@Text(r2);

REM "Feiertage in Textliste durch leere Elemente ersetzen, diese entfernen";
r4:=@Trim(@Replace(r3;hl;""));

REM "Textliste in Datumswerte wandeln";
r5:=@TextToTime(r4);

REM "Datumswerte in Wochentagsnummern wandeln, diese in Text wandeln";
r6:=@Text(@Weekday(r5));

REM "Wochentagsnummern Sa und So durch leere Elemente ersetzen, diese entfernen";
r7:=@Trim(@Replace(r6;"1":"7";""));

REM "Zahl der verbleibenden Tage bestimmen";
res:=@Elements(r7);

REM "Resultat ausgeben";
res

Und hier möchte ich die beiden genannten Daten noch mit 0,5 Tagen einpflegen.

Ich hoffe Deine Frage konnte ich beantworten ich bin leider blutiger Anfänger und kenn mich mit den Fachausdrücken nicht so aus!!
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: LordDestiny am 06.01.03 - 14:48:51
erweitere den Sourcecode bitte wie folgt:

REM "Zahl der verbleibenden Tage bestimmen";
res:=@Elements(r7);

@Set("res";@If(@IsMember("24.12.2003";r4)=@True & Weekday(@TextToTime("24.12.2003"))!=1 & Weekday(@TextToTime("24.12.2003"))!=7;res-0,5;res));
@Set("res";@If(@IsMember("31.12.2003";r4)=@True & Weekday(@TextToTime("31.12.2003"))!=1 & Weekday(@TextToTime("31.12.2003"))!=7;res-0,5;res));


REM "Resultat ausgeben";
res

Die beiden Zeilen korrigieren den Inhalt der Variable res, sofern die beiden Tage in dem gewählten Zeitbereich liegen und kein Sonn- oder Samstag sind.
Sollte egtl. so funktionieren.

Gruss,
LD
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: aba am 07.01.03 - 08:17:32
Hallo Lord Destiny,

habe leider gestern keinen Zugriff mehr gehabt. Aber nun wieder und habe gerade Deine Lösung probiert aber dort scheint ein Fehler drin zu sein.

Ich habe mal ein jpg beigefügt.
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: LordDestiny am 07.01.03 - 09:55:12
Ups ... sorry, kleiner Flüchtigkeitsfehler.

Hier der korrigierte Source:

@Set("res";@If(@IsMember("24.12.2003";r4)=@True & Weekday(@TextToTime("24.12.2003"))!=1 & @Weekday(@TextToTime("24.12.2003"))!=7;res-0,5;res));
@Set("res";@If(@IsMember("31.12.2003";r4)=@True & @Weekday(@TextToTime("31.12.2003"))!=1 & Weekday(@TextToTime("31.12.2003"))!=7;res-0,5;res));

Das @ hat bei Weekday gefehlt ... daher das Anmakeln der Klammer.
Titel: Re:Halbe und viertel Tage berechnen
Beitrag von: aba am 07.01.03 - 10:15:36
Hallo Lord Destiny,

alles klar jetzt fehlten zwar immer noch zwei @ Zeichen aber jetzt funktioniert es. Vielen vielen Dank. Weißt Du evtl. auch wie ich das hinbekomme, das ich in einer Datenbank die für alle User zugänglich ist. Die einzeln erstellten Dokumente nur von bestimmten Personen verändert werden darf (also z.B. Author) aber ruhig von allen gelesen.