Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: Mick S. am 20.09.04 - 16:51:52

Titel: Datum / Zeitfelder
Beitrag von: Mick S. am 20.09.04 - 16:51:52
 :)  Hallo alle zusammen. Bin neu hier im Forum, da ich erst seit 3 Tage mich mit dem Designer beschäftige.
Habe auch gleich mal ne Frage: Habe ein Datum und ein Zeitfeld erstellt, womit ich ein Wiedervorlagetermin eingeben lässt. Möchte nun in der Spaltenansicht diesen Termin grafisch darstellen als noch gültig oder verstrichen. Hab das Problem das ich nicht beide Felder berücksichtigen kann. Nur mit dem Datum gelingt mir das Bsp.: if(Datum=<@yesterday;114;115), aber mit dem Zeitfenster haperts. Wer kann mir helfen ?

MfG
Mick
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 20.09.04 - 17:30:48
Eine Variante, um die Felder "Datum" und "Uhrzeit" zusammenzuflöhen:

Code
@If (@IsTime (Datum) & @IsTime (Uhrzeit); @Date (@Year (Datum); @Month (Datum); @Day (Datum); @Hour (Uhrzeit); @Minute (Uhrzeit); @Second (Uhrzeit)); "");

Die vorangehende Abfrage nach IsTime ist erforderlich, um bei nicht ausgefüllten Werten eine Fehlermeldung zu vermeiden.

HTH,
Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: audiojosi am 20.09.04 - 17:34:41
Hallo Mick,

einfach die Formel noch ein bißchen erweitern: Wenn Datum von heute, dann zusätzlich Uhrzeit checken.

@If(datum = @Today & zeit <= @Time(@Now) | datum < @Today ;100;102).

Vielleicht noch mit @IsTime Feldinhalt überprüfen, um Fehler auszuschließen

Gruss
Jürgen
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 20.09.04 - 17:52:56
Vielen Dank ! Das hilft mir echt weiter.
Ich probiers morgen gleich aus...ansonsten melde ich mich nochmal.

Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 20.09.04 - 18:04:04
Und Obicht dabei: @Today und @Yesterday liefern Dir nur den Datumsteil zurück - das "Zeitfenster" ist da dann ziemlich wurscht.
Wenn Du - beispielsweise - anzeigen möchtest, dass Dein "Datum" + "Uhrzeit" nicht länger als 24 Stunden her ist, musst Du mit @Now und @Adjust arbeiten.

HTH,
Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 20.09.04 - 18:21:31
es müssen auch die Stunden berücksichtigt werden (Soll heissen, wenn die vorgegebene Zeit älter ist als die aktuelle, soll sich das Icon ändern). Dachte die @now Funktion funktioniert erst ab R6 (laut Hilfe) ?
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 20.09.04 - 18:27:03
Keine Ahnung, wo Du das her hast, aber @Now funktioniert schon seit R2  ;)

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 20.09.04 - 18:41:31
Na dann ists o.k.
Arbeite im R6 Designer. Und da steht in der Hilfe, ab R6 !?
Die Datenbank soll daa aber auf einen Domino R5 laufen.
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 20.09.04 - 18:48:50
Zitat
Note  The flags and serverNames parameters are new with Release 6.

Bitte genau lesen, was in der Hilfe steht. Ein dort zugehöriges Beispiel arbeitet auch R5-konform schlicht mit @Now ohne den Parametern, die tatsächlich in R6 neu sind.

HTH,
Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 20.09.04 - 19:44:05
O.K....dann schau ich nächstes Mal genauer nach.
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 20.09.04 - 19:55:08
Kein Problem, Mick. Es kommt halt eben immer auf die Syntax an - gerade, wenn was mit Ry entwickelt wird, um unter Rx zu laufen.

You're welcome !

Servus,
Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 21.09.04 - 16:16:15
Hab ich jetzt ausprobiert ! Klappt ganz gut, hab nur ein kleines Problem: Ich muß die Ansicht wechseln, damit sich das Icon, nach Zeitablauf ändert. Durch aktualisieren (F9) allein ändert sich der Wert nicht.

Hab noch ne weitere Frage: Hab die Formel auch für ein Feld eingegeben (Eingabevalidierung). Jetzt kommt eine Fehlermeldung, wenn ich kein Datum eingebe. Hab versucht es mit @Istime zu unterbinden, klappt aber nicht so ganz:

@If(IsTime(Datum) = @Today  & @IsTime(Zeit) <= @Now | Datum < @Today ; @Failure("Der Wiedervorlagetermin liegt in
der Vergangenheit."); @Success);

Möchte auch gern das "Prompt-Feld" benutzen,damit ich auch einen Titel vergeben kann, das erscheint auch, aber immer wieder, soll heißen, wenn ich O.K. anklicke erscheint es wieder. Beispiel:

@If(IsTime(Datum) = @Today  & @IsTime(Zeit) <= @Now | Datum < @Today ; @Prompt(1;"Wiedervorlage";"Der Wiedervorlagetermin liegt in der
Vergangenheit.";""); @Success)

Ich ändere das Ganze in der R5 Mail Schablone, damit ich so ne Art "kleiner Workflow" schaffen kann.

Hab ganz schön viele Fragen, was ? Warte noch auf meine "Designer-Lektüre"...hoffe dann muß ich nicht mehr so viele Fragen stellen.

Also, schon mal vielen Dank im vorraus.
Titel: Re:Datum / Zeitfelder
Beitrag von: Driri am 21.09.04 - 16:42:28
IsTime liefert dir True oder False zurück, ein Vergleich mit @Today geht dann unweigerlich ins Aus, sprich in den Else-Zweig der If-Abfrage.

Du müßtest quasi noch eine Abfrage vorschalten, mit der Du erstmal prüfst, ob es sich um ein Datum handelt bzw. ob das Feld überhaupt gefüllt ist. Dann die Prüfung, ob es sich um gültiges Datum nach deinen Regeln handelt.

Also grob so :

@If(@IsTime(Datum); ... ; @Failure(...))
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 21.09.04 - 16:50:46
Habe schon einige Versuche gestartet, aber hat bis jetzt nicht geklappt...
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 21.09.04 - 18:25:16
Tja, dann müsste man jetzt mal wissen, wie Deine aktuelle Formel aussieht ... Sonst wird das Kaffeesatzleserei.

Je genauer die Fragen, desto besser die Antworten ...  ;)

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 21.09.04 - 19:27:31
Ist weiter oben beschrieben: ^

@If(IsTime(Datum) = @Today  & @IsTime(Zeit) <= @Now | Datum < @Today ; @Failure("Der Wiedervorlagetermin liegt in
der Vergangenheit."); @Success);
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 21.09.04 - 19:32:29
Da hatte Driri AKA Ingo ja schon geantwortet ...

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 21.09.04 - 19:47:21
Jup, aber wie er es beschrieben hat, hab ich es auch schon probiert, leider ohne Erfolg
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 21.09.04 - 19:57:19
Wo ist der Code ? Wo steht der Code ?
Kaffeesatzleserei fällt hier aus.

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 21.09.04 - 20:10:01
Hab ich doch hingeschrieben: @If(IsTime(Datum) = @Today  & @IsTime(Zeit) <= @Now | Datum < @Today ; @Failure("Der Wiedervorlagetermin liegt in
der Vergangenheit."); @Success) Dann kommt die Fehlermeldung (wenn man kein Datum eingibt), das die Vergleichsoperatoren fehlen.
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 21.09.04 - 20:12:51
Was hat Driri schon geschrieben ?
@isTime (Datum) gibt @True oder @False zurück, und boolesche Werte kannst Du nicht mit einem Datumswert wie @Today vergleichen.
Das Grundgerüst für die Lösung hat er auch geliefert. Dort musst Du also ansetzen !

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 21.09.04 - 20:16:19
Hab ich doch hingeschrieben: @If(IsTime(Datum) = @Today  & @IsTime(Zeit) <= @Now | Datum < @Today ; @Failure("Der Wiedervorlagetermin liegt in
der Vergangenheit."); @Success) Dann kommt die Fehlermeldung (wenn man kein Datum eingibt), das die Vergleichsoperatoren fehlen.
Habe es auch so probiert :
@If(@IsTime(Datum);@istime(Zeit); @Success);@failure(@If (Datum) = @Today  & Zeit <= @Now | Datum < @Today ; @Failure("Der Wiedervorlagetermin liegt in
der Vergangenheit."); @Success)""));
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 21.09.04 - 20:38:42
Du liegst hier völlig auf der falschen Schine und brauchst jetzt sicherlich ein gutes Buch oder einen Lehrgang, Mick:
Ich flöhe jetzt mal Deine Formel auseinander:

@If (@IsTime(Datum);@istime(Zeit); @Success)
Wenn "Datum ist ein Datum-/Zeitwert", dann "Zeit WIRD ein Zeit-/Datumwert !"
Das kannst Du nicht beeinflussen. Den Datentyp kannst Du so nicht ändern.
Du willst eher:
Wenn "Datum ist ein Datum-/Zeitwert UND Zeit ist ein Zeit-/ Datumwert, dann ..."
Jetzt kommt bei Dir ein Klammerfehler - zähl mal die Klammern ...

Richtig wäre:
@if (@IsTime (Datum) & @IsTime (Zeit); @Success; @Failure ("Deine Fehlermeldung"))

Den Rest mag ich jetzt nicht mehr durchgehen - Du müsstest hier erst mal nacharbeiten, damit die korrekte Syntax klar ist.

HTH,
Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 21.09.04 - 20:41:22
O.k Ich schau mir das morgen noch mal an.

Vielleicht klappt´s ja.

Danke erstmal.
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 21.09.04 - 20:43:56
Das klappt logischerweise und garantiert. Du musst nur die Syntax und die Rückgabewerte beachten. "Vielleicht" und Programmierung sind wie Feuer und Wasser. Das ist 'ne Grundregel  ;D

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 22.09.04 - 16:55:01
 ::) Hat geklappt !Hab jetzt die richtige Formel gefunden:

@If(@IsTime(Datum) & @IsTime(Zeit);@If(Datum = @Today & Zeit <= @Now | Datum < @Today ;@Failure ("Wiedervorlagetermin liegt in der Vergangenheit!");@Success);Datum = "" & Zeit =""; @Success;@Failure("Tragen Sie Uhrzeit und Datum ein!"))

Ansonsten möchte ich noch statt der @Failure-Box eine andere Info-Box verweden, damit ich auch den Titel der Box angeben kann (z.B. mit @Prompt).
Aber wenn ich das mache, taucht die Info-Box ständig nach dem OK klicken wieder auf, anstatt ich das Dokument dann bearbeiten kann.

Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 22.09.04 - 17:08:49
Wo hast Du denn @Prompt stehen ? In der Eingabevalidierung ist @Prompt auf jeden Fall nicht erlaubt.

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 22.09.04 - 17:26:10
Hab es dort stehen gehabt, wo in der Formel @Failure(Der Wiedervorlagetermin....
Hat auch funktioniert so weit, aber die Info-Box ging halt nicht mehr zu.

Hab alles in der Eingabevalidierung stehen gehabt ???
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 22.09.04 - 17:40:11
@Wie schon geschrieben: @Prompt ist in der Eingabevalidierung nicht zulässig.
Eigene Fehlermeldungen erfordern einiges mehr an Aufwand. Daher ein gut gemeinter Ratschlag: Stell' die Frage später nochmal, und mach' jetzt erstmal Basics. Es wird Dir dann später garantiert leichter fallen, auch (komplett) eigene Fehlermeldungen zu fabrizieren.

HTH,
Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 22.09.04 - 17:42:54
O.K....warte immer noch auf mein Lotus Designer Buch.
Hoffentlich kommts bald.

Danke erstmal.
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 22.09.04 - 17:50:44
Mick, das hilft Dir dabei dann auch erstmal nicht weiter. Eigene Fehlermeldungen sind hingegen nicht wirklich trivial, und Du nagst momentan noch ganz unten am Wissensaufbau (wie wir alle mal). Nage dort erstmal fleissig und strukturiert weiter, und hebe Dir diese Aufgabe für später auf.

Bitte verstehe das nicht als hochnäsig (nochmal: Ich habe auch genauso wie Du mit Null-Ahnung angefangen), sondern einfach als didaktischen Hinweis.

HTH - und viel Erfolg !
Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 22.09.04 - 18:18:03
Alles klar..dann fang ich schon mal an zu nagen...... ;)
Titel: Re:Datum / Zeitfelder
Beitrag von: koehlerbv am 22.09.04 - 18:24:10
... und dann sag' an, wenn sich Deinen Nagezähnen ein (scheinbarer) Stahlträger in den Weg stellt - wir schauen dann mal gemeinsam, ob wir den nicht auch weich (zum Zernagen) kriegen  ;D

Bernhard
Titel: Re:Datum / Zeitfelder
Beitrag von: Mick S. am 22.09.04 - 18:33:27
All right !  :D Vielen Dank!