Domino 9 und frühere Versionen > ND7: Entwicklung
wieder mal Probleme mit Datum/Zeit Feldern
Demian:
Moin,moin,
ich habe in meiner Maske ein Datumsfeld, das auf Anzeige "nur Datum" steht (wegen Anzeige und Sortierung in Ansicht). Wenn ich ein neues Dokument manuell erstelle, enthält das Item richtiger Weise z.B. 01.05.2009 (siehe Screenshot manuell.jpg). Ich musste aber einige Dokumente aus einer Exceltabelle importieren. In diesen Doks steht in dem Item z.B. 01.05.2009 00:00:00 CEDT.
Das führt dazu, dass in meiner Ansicht bei der Kategorie Jahr, 2009 2x erscheint. Jetzt hab ich nen Agenten drüber laufen lassen und das Feld mit Cdat(NotesDateTime.DateOnly) überschrieben. Er behält aber die Uhrzeit trotzdem im Item. Wenn ich eines dieser Dokumente manuell bearbeite, das Datum lösche und das Jahr 2009 manuell eintrage, hat er wieder das 00:00:00 CEDT mit drin, obwohl das bei ganz neuen Doks nicht so ist.
Statt cdat habe ichs auch schon mit Datevalue probiert. Ebenso statt .DateOnly mit .LSLocalTime. Es bleibt dabei. Er behält die Uhrzeit mit drin. Im Debugger zeigt er für das Item aber seltsamerweise nur das Datum an. :-:
Wie zum Geier krieg ich es hin, dass er nur das Datum in das Feld schreibt, ohne Uhrzeit und nicht als Text?
koehlerbv:
Sowie Du das im Backend machst, bekommst Du Datum UND Uhrzeit.
Das ist auch in keinster Weise störend. In Ansichten musst Du (als ordentlicher Programmierer) ja sowieso darauf reagieren, ob da überhaupt ein gültiger DT-Wert steht. Du kannst dann dort auch gleich noch mit @Date einen gültigen DT-Wert normieren. Auch das ist ein "must" in Ansichten, in denen eine Spalte NUR das Datum ohne Zeitkomponente anzeigen soll.
Bernhard
PS: Niemals das Backend ausser Acht lassen ;)
Demian:
--- Zitat von: koehlerbv am 20.05.09 - 15:18:39 ---Sowie Du das im Backend machst, bekommst Du Datum UND Uhrzeit.
--- Ende Zitat ---
Aber bei den importierten Doks auch im Frontend. Nur bei ganz neuen Doks nicht.
--- Zitat von: koehlerbv am 20.05.09 - 15:18:39 --- (als ordentlicher Programmierer)
--- Ende Zitat ---
Gut, dass ich Personaler bin ;D Ich denke, wenn ich das Vollzeit machen würde und nicht nur hier und da alle paar Wochen, würde sich sowas eher einprägen.
--- Zitat von: koehlerbv am 20.05.09 - 15:18:39 ---In Ansichten musst Du (als ordentlicher Programmierer)ja sowieso darauf reagieren, ob da überhaupt ein gültiger DT-Wert steht.
--- Ende Zitat ---
Das macht ja Notes bei der Eingabe schon. Aber wie könnte ich das in Ansichten abfragen, @isdate oder sowas gibts ja nicht direkt.
--- Zitat von: koehlerbv am 20.05.09 - 15:18:39 --- Du kannst dann dort auch gleich noch mit @Date einen gültigen DT-Wert normieren. Auch das ist ein "must" in Ansichten, in denen eine Spalte NUR das Datum ohne Zeitkomponente anzeigen soll.
--- Ende Zitat ---
Ich habe das bis jetzt immer nur in der Spalteneigenschaft gemacht mit Anzeige "nur Jahr". Habe jetzt in der Formel noch ein @year um das Feld gesetzt. Jetzt ignoriert er die verschiedenen Items . Aber sollte es nicht auch nur über die Spalteneigenschaft funktionieren? Ansonsten ist die Eigenschaft ja eigentlich für die Füße, oder nicht? ::)
Oh mann, manchmal könnt ich mir wirklich in den H..... treten. Zig verschiedene Agenten probiert und dann ist es eigentlich so einfach.
--- Zitat von: koehlerbv am 20.05.09 - 15:18:39 ---
PS: Niemals das Backend ausser Acht lassen
--- Ende Zitat ---
Auch hier bin ich leichgläubigerweiße davon ausgegangen, dass .dateonly auch only date zurückgibt :-\
Demian:
--- Zitat von: koehlerbv am 20.05.09 - 15:18:39 ---Du kannst dann dort auch gleich noch mit @Date einen gültigen DT-Wert normieren.
--- Ende Zitat ---
Vor lauter Frust das Wichtigste vergessen: Danke für den Tip ;)
koehlerbv:
Hallo Demian,
wollten wir nicht sowieso telefonieren? ;)
Zu Deinen Anmerkungen:
Import ist Backend. Und wenn der Time-Part erstmal drin ist ... Du darfst nicht vergessen: Nicht nur in Notes sind DT-Werte reelle Zahlen. Datumsseriennummern eben. und x,0 ist eben xx.xx.xxxx 00:00:00.
Gut, dass Du Personaler bist - darum ist ein Programmierer ja auch kein Personaler, weil er davon bestenfalls eine gewisse "Überblicks-Kennung" hat - aber keine wirkliche Ahnung. Und vice versa. Du brauchst einen Programmierer an Deiner Seite, mit dem Du absprichst (was Du einfach selber machen kannst und wo eben das Spezialwissen gefragt ist). An der falschen Stelle sparen wird teuer. Frag Deine Nachbarabteilung (die Finanzer), die kennen sich mit diesen Rechnungen noch besser aus.
Bei der Eingabe ... Nun, das ist eine reine Frontend-Geschichte (und ja, das lässt sich auch über das Backend ... aber das wäre hier nicht zielführend). Gehe einfach davon aus, dass DT-Werte aus beiden Komponenten bestehen. Du weisst im Voraus ja nie, was Dir später im Backend noch Knüppel zwischen die Beine werfen kann.
Prüfung auf gültige DT-Werte: Einfachst und ein must have, weil man ja nie weiss ...
@If (@IsTime (dtvalue); @Date (dtvalue); <DeineReaktion>)
Hierbei passiert beides: Wenn der DT-Wert ein gültiger ist, wird nur die Datumskomponente angezeigt, im Else-Zweig musst Du Deine Reaktion für den Fall einbauen, dass statt 20.05.2009 dort "Im Himmel ist Jahrmarkt" eingetragen ist.
Wegen den Spalteneigenschaften: Das erfordert nun tiefere Kenntnisse der view indices in Notes. Im Index sind da für die Spalte verschiedene Dinge gespeichert - bei Dir also einmal DD.MM.YYYY und einmal DD.MM.YYYY HH:MM:SS. Angezeigt wird laut Forderung nur das Jahr, aber die Basis ist ... na, Du hast das sicher erkannt: Es sind zwei Paar Schuhe und ergibt auch mehr als eine Kategorie.
Aus meinen Vorträgen "Notes und die Zeit" muss ich endlich mal einen AtNotes Best Practice Artikel machen ;D
HTH,
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln