HCL Notes / Domino / Diverses > Entwicklung

Wochentage bzw. Funktion Weekday

(1/1)

LordMonster:
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?




Tode:
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
--- Ende Code ---

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
--- Ende Code ---

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()
--- Ende Code ---

Damit das andere Feld auch wirklich bei jeder Änderung ein / ausgeblendet wird

CarstenH:
Du denkst zu kompliziert. Das zusätzliche Feld bekommt die Hide-When-Formel:


--- Code: ---@Weekday(Bestellung_Datum) != 3
--- Ende Code ---

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.

LordMonster:
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!

Tode:
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)];

--- Ende Code ---

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

Navigation

[0] Themen-Index

Zur normalen Ansicht wechseln