Autor Thema: DateTime Multivalue-Field via LS füllen - ohne Zeitkomponente  (Gelesen 2983 mal)

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Hallo zusammen,

in einem Dokument befinden sich 2 Date/Time Felder mit einer Datumsangabe (StartDate, EndDate).

Via LotusScript soll im Backend quasi die Funktion:

@TextToTime(@Explode(
   @TextToTime( @Text(StartDate) + " - " + @Text(EndDate) )
))

"nachgebaut" werden, ein resultierenden Feld (z.B. DateRange) also jeden einzelnen Tag von StartDate bis EndDate enthalten.

Ich generiere also die einzelnen Werte, schreibe diese in ein Array (als Variant, resultierend aus NotesDateTime.LSLocalTime)  und weise das Array dem resultierenden Feld zu.

Leider ist (egal was ich auch versucht habe) IMMER die Zeitkomponente mit im Feld gespeichert, was ich nicht gebrauchen kann, z.B.

12.12.2005 00:00:00 CET
13.12.2005 00:00:00 CET
14.12.2005 00:00:00 CET

Die Formelsprache-Variante macht das nicht.

Kennt da jemand einen Trick?

Gruß
Manfred

*EDIT* Status auf "Daumen hoch" gesetzt.
« Letzte Änderung: 01.12.05 - 11:09:49 von Manfred Dillmann »

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
LS setzt immer auch die Zeitkomponente, wobei diese aber eigentlich sowieso immer mit dabei ist: Letztendlich ist jeder DT-Wert eine reelle Zahl.
Was stört Dich denn an 0 Uhr ? Für's Rechnen ist es egal (bzw. korrekt), für die Anzeige lässt es sich wieder verstecken.

Bernhard

Glombi

  • Gast
Mittels Evaluate sollte das gehen

ret = Evaluate( |FIELD CalendarDateTime := @Date(CalendarDateTime);@True|, doc )

Andreas

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
LS setzt immer auch die Zeitkomponente, wobei diese aber eigentlich sowieso immer mit dabei ist: Letztendlich ist jeder DT-Wert eine reelle Zahl.
Was stört Dich denn an 0 Uhr ? Für's Rechnen ist es egal (bzw. korrekt), für die Anzeige lässt es sich wieder verstecken.

Bernhard
der Zeit- oder Datumsteil eines Feldes kann auch mit LS weggelassen werden. In NotesDateTime gibt es SetAnyTime und SetAnyDate, damit fehlen dann die Zeit /Datumsangaben und werden auch nicht mehr in ein Feld geschrieben.

Gruß
Dirk
Gruß
Dirk

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
@Andreas:
Ja, Evaluate geht, aber ich wollte das doch LS-only lösen... :-)

@Bernhard:
Für die Anzeige kann ich das wieder hinbiegen, klar (z.B. in einer Ansichtenspalte mit @Date). Beim Rechnen mit 00:00 Uhr ist das IMHO nicht so ohne.

Erninnerst Du Dich noch an den Bug in einer älteren Notes-Version, wo plötzlich nach der Umstellung auf Sommerzeit/Winterzeit die Termine um einen Tag verschoben angezeigt wurden? Habe mir das damals im Design angeschaut, man hatte 00:01 als Uhrzeit gewählt und je nach dem wie umgestellt wurde, ist ein solcher Termin über die Mitternachtsgrenze "gerutscht".

Für die Anzeige ändern geht - aber dann brauche ich immer wieder zusätzlich z.B. @Date - wollte ich mir sparen.

Für Singe-Value-Fields habe ich es ja auch hinbekommen, geht prima:

Nach der Zuweisung des Wertes zum Feld kann man die Zeitkomponente mit

Call NotesItem.DateTimeValue.SetAnyTime

killen. Nur leider nicht, wenn das Feld Multivalue sein soll.

Gruß
Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Hallo Dirk,

da warst Du ja noch schneller als ich (SetAnyTime).

Wie soll das mit einem Multi-Value-Feld funktionieren?

Gruß
Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline Gandhi

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 918
  • Geschlecht: Männlich
  • Domino for the masses
Indem Du einen Array auf diese weise mit Date-Only werten baust und den dann in das Feld schreibst?
Der "Wenn ich" und der "Hätt' ich" das sind zwei arme Leut'
oder für den Süden:
Hatti Tatti Wari - san drei Larifari

Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
habs noch nicht versucht, aber ich würde versuchen das Array anders zu füllen.

Für die einzelnen Datumswerte einem NotesDateTime-Object erstellen, dann mit SetAnyTime die Zeiten verwerfen und dann mit Array(i) = NotesDateTime(LSLocalTime) den Datumswert ins Array schreiben. Das Array dann dem Feld übergeben.
« Letzte Änderung: 01.12.05 - 10:44:08 von diali »
Gruß
Dirk

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
@Gandhi und @Dirk:

Alles schon probiert, hat nicht funktioniert. Offensichtlich wird immer in dem Moment, wo das Array dem Feld zugewiesen wird, die Zeitkomponente angehängt (Auch wenn laut Debugger in den einzelnen Array-Werten keine Zeitkomponente enthalten ist).

Und nu? ;-)

Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
was macht ein ComputeWithForm?, löscht der eventuell die Zeiten raus?
Gruß
Dirk

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: DateTime Multivalue-Field via LS füllen - ohne Zeitkomponente
« Antwort #10 am: 01.12.05 - 10:49:26 »
>>was macht ein ComputeWithForm?, löscht der eventuell die Zeiten raus?<<

Wird wahrscheinlich funktionieren (nicht probiert). Ist aber wie auch Evaluate so ein wenig von hinten in die Brust.

Wenns aber einfach nicht direkt via LS geht, bleibt einem ja nichts übrig.

Ich dachte, dass da ggf. jemand einen einfachen LS-native Trick kennt...

Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline diali

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.023
  • Geschlecht: Männlich
Re: DateTime Multivalue-Field via LS füllen - ohne Zeitkomponente
« Antwort #11 am: 01.12.05 - 10:53:33 »
Wie hast du das Array übergeben?
Probiers eventuell mal über NotesItem.Values.

Glaube zwar nicht, dass es funktioniert, aber ein Versuch wäre es noch wert.
Gruß
Dirk

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: DateTime Multivalue-Field via LS füllen - ohne Zeitkomponente
« Antwort #12 am: 01.12.05 - 11:08:51 »
>>Glaube zwar nicht, dass es funktioniert, aber ein Versuch wäre es noch wert.<<

Ich hatte verschiedene Arten der Zuweisung ausprobiert - ob die von Dir genannte dabei war, weiss ich nicht mehr sicher. Probiere ich bei Gelegenheit noch mal aus...

Noch mal danke an alle für die Antworten!

Gruß
Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


Offline Christian Huber

  • Frischling
  • *
  • Beiträge: 11
Re: DateTime Multivalue-Field via LS füllen - ohne Zeitkomponente
« Antwort #13 am: 02.12.05 - 07:47:30 »
Ich weiss ja nicht, für welche Anwendung Du das brauchst, aber wenn Probleme
wie Zeitverschiebung auftauchen können, würde ich ausschliesslich Zeitdifferenzen
zu einem Referenzdatum verwenden.

Hatte ähnliche Probleme sowohl mit .lslocaltime wie auch .dateonly, etc. wenn z.B.
unterschiedliche Clients mit unterschiedlichen Zeitzonen an ein und demselben
Dokument arbeiten.

Hab dann einfach nicht mehr das Datum als Date gespeichert sondern als Zeitdifferenz
(Long). Bei der Weiterverarbeitung dann normal mit New Notesdatetime+adjust. Ist halt
zeitaufwändig bei Ausgabe der Werte in Ansichten, aber es kommt halt immer auf
die Anwendung an, die man gerade macht.

bye
Christian

Offline Manfred Dillmann

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 859
  • Geschlecht: Männlich
    • www.madicon.de
Re: DateTime Multivalue-Field via LS füllen - ohne Zeitkomponente
« Antwort #14 am: 02.12.05 - 09:29:36 »
Christian,

danke für Deinen Hinweis. Mir ist durchaus bewusst, dass es mit Datum/Zeit immer wieder Probleme gibt - und das nicht nur auf DST bezogen.

Ganz schlimm wird es, wenn man (z.B. aus einem RSS-Feed) eine Zeitinformation als "String" erhält und diese dann von NotesClients mit unterschiedlichen Ländersettings in DateTimeValue Fields schreiben lässt... zum Glück gibt es International nicht soooo viele Formate, aber in LS muss man da trotzdem aufpassen.

Manfred

Support, Beratung, Schulung, Anwendungsentwicklung oder Tipps & Tricks zu Lotus Notes/Domino?
www.madicon.de

Personalisierte Notes/Domino Serienmails?
madicon easyMail


 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz