Das Notes Forum

HCL Notes / Domino / Diverses => Entwicklung => Thema gestartet von: LordMonster am 10.02.25 - 10:51:52

Titel: Wochentage bzw. Funktion Weekday
Beitrag von: LordMonster am 10.02.25 - 10:51:52
Hallo zusammen,

ich brauche mal wieder eure Unterstützung.
Aktuell versuche ich, die Funktion @weekday zu verstehen, komme aber nicht weiter.

Was möchte ich erreichen?
Wenn im Datumsfeld "Bestellung_Datum" ein Dienstag ausgewählt wird, soll ein weiteres Feld angezeigt werden.

Mein Lösungsansatz:

Die Anzeige des zusätzlichen Feldes steuere ich über die Funktion „Absatz verbergen“.
Mithilfe von @weekday wollte ich im versteckten Feld den Wochentag oder eine entsprechende Zahl berechnen, um die Anzeige dynamisch zu steuern.
Leider klappt es bisher nicht wie geplant. Hat jemand eine Idee, wie ich das korrekt umsetzen kann?

Danke schon mal für eure Hilfe!
z.b:

var w = "";
@Weekday(Bestellung_Datum())) {
   case 1 : w = "Sunday"; break;
   case 2 : w = "Monday"; break;
   case 3 : w = "Tuesday"; break;
   case 4 : w = "Wednesday"; break;
   case 5 : w = "Thursday"; break;
   case 6 : w = "Friday"; break;
   case 7 : w = "Saturday"; break;
}

 
Könnt Ihr mir bitte kurz erklären wie ich die Formel richtig schreibe?




Titel: Antw:Wochentage bzw. Funktion Weekday
Beitrag von: Tode am 10.02.25 - 11:22:14
OK, also Formelsprache ist das, was Du da schreibst schonmal nicht... Das was Du als CODE geschrieben hast, geht am einfachsten mit einer Liste:

Code
_wochentage := "Sunday" : "Monday" : "Tuesday" : "Wednesday" : "Thursday" : "Friday" : "Saturday";
_aktuellerWochentag := _wochentage[@Weekday(Bestellung_Datum)]
_aktuellerWochentag

Das liefert dann "Tuesday" zurück.... aber Du willst ja ein Hide-When für ein Feld erstellen, das ist viel einfacher:

Code
@Weekday(Bestellung_Datum) != 3

Dann musst Du allerdings ins "onChange"- Event des Bestellung_Datum- Feldes sowie ins "Exiting" Event sowas schreiben wie:

Code
Dim ws as New NotesUIWorkspace
Call ws.CurrentDocument.Refresh()

Damit das andere Feld auch wirklich bei jeder Änderung ein / ausgeblendet wird
Titel: Antw:Wochentage bzw. Funktion Weekday
Beitrag von: CarstenH am 10.02.25 - 11:36:05
Du denkst zu kompliziert. Das zusätzliche Feld bekommt die Hide-When-Formel:

Code
@Weekday(Bestellung_Datum) != 3

Statt != ginge auch <>

Damit wird es immer versteckt wenn Weekday ungleich 3 ist.

Noch wichtig:
- beide Felder müssen in getrennten Absätzen stehen
- das zusätzliche Feld sollte in der Tab-Reihenfolge nach dem Datumsfeld kommen
- für Notesclients empfehle ich noch das Aktivieren des Exiting/OnChange (zweiter Eigenschafts-Tab ganz unten).
- beim manuellen Eintippen des Datums wirkt das erst nach dem Verlassen des Datumsfeldes.

HTH
Carsten

Edit: Torsten war schneller - ich lass meins trotzdem mit stehen, vielleicht hilft es ja dennoch.
Titel: Antw:Wochentage bzw. Funktion Weekday
Beitrag von: LordMonster am 10.02.25 - 13:06:25
Danke, das ist ja doch nicht so kompliziert wie ich dachte.

Leider funktioniert es nur mit folgendem Code:

_aktuellerWochentag := _wochentage[@Weekday(@Today)];

Wenn ich jedoch versuche, das Datum aus meinem Kalenderfeld zu verwenden, was der Mitarbeiter auswählen kann erhalte ich den Fehler:

Falscher Datentyp für Operation oder @Funktion: Zeit/Datum erwartet.

_aktuellerWochentag := _wochentage[@Weekday(Bestellung_Datum)];


Details:

Das Feld Bestellung_Datum ist ein normales Kalenderfeld. (Datum/Zeit
Das Ausgabefeld (Weekday) ist ein einfaches Textfeld.
Ich habe bereits verschiedene Datentypen ausprobiert, aber der Fehler bleibt bestehen.
Muss ich hier noch etwas an den Einstellungen ändern oder einen anderen Ansatz wählen?

Danke im Voraus für eure Unterstützung!
Titel: Antw:Wochentage bzw. Funktion Weekday
Beitrag von: Tode am 11.02.25 - 09:03:49
Wenn Du ein Feld hast, das der Benutzer ausfüllt, dann muss eine Abfrage für den initial leeren Wert rein:

Code
@If( Bestellung_Datum = ""; @Return( @True ) ; "" );
_aktuellerWochentag := _wochentage[@Weekday(Bestellung_Datum)];

Die erste Zeile ist der "Break" und sorgt dafür, dass das Feld verborgen bleibt, solange kein Datum ausgewählt ist