Schönheitsfehler mit Compose

  • Ok ich hab mal etwas rumprobiert


    Also ich würde den Wert schon ganz gerne als Datum behalten



    ist denn folgendes richtig?
    funktionieren tut es anscheinend



    Dim geburtstag As NotesDateTime
    ...
    Set geburtstag = New notesdatetime(maindoc.GetItemValue( "geburtstag" )(0))
    ...
    Call doc1.replaceItemValue("geburtstag", geburtstag)




    ------------
    und ist das Ganze mit Variant falsch oder auch ein möglicher Weg?

  • Also ich hab bei der von dir verwendeten Variante schon öfters mal die Erfahrung gemacht, daß da teilweise falsche Werte rauskommen, weil es zwischen z.B. deutschem und englischem Datum konvertiert wird.


    Die sicherste Variante ist auf jeden Fall sich direkt den DateTimeValue zu holen


    Falsch ist es nicht, ich versuche nur Variants zu vermeiden, da diese langsam sind und bei intensiver Verwendung kann das zu einem Performance Problem werden.

  • Widerspruch, taurec: Ein DT-Variant (Type 7) nimmt gerade mal 8 Byte ein, und dass muss die Performance in keinster Weise in den Keller ziehen.


    Und diese Wandlung und Anlage eines neues Items geht in einem Einzeiler:
    doc.DeinDTWert = Cdat (doc.DeinStringWert (0))


    Bernhard

  • Und genau bei diesen Einzeilern, die ich früher auch verwendet habe, kam es zu den genannten Problemen. Da wurden auf einmal Tag und Monat verdreht, vor allem wenn man in internationalen Umgebungen mit verschiedensten Clients und Servern gearbeitet hat.


    Das muss nicht passieren, aber es kann.


    Ich hatte viele Fälle bei denen es so kein Problem gab, dann aber auch wieder welche, die Probleme gemacht hatten

  • Okay, taurec - das ist klar. Nur macht das eine Konvertierung eines Strings via NotesDateTime class auch nicht besser: Ob Cdat ("31.12.2007") oder das selbe mit NotesItem.DateTimeValue - auf einem US-eingestellten System scheppert beides.


    Bernhard

  • Moment: Quelle ist ein Textfeld.


    Der Transfer in das Ziel-Item findet aber im Backend statt, ergo gibt es keine "Feldtypen" und man kann da hineinschreiben, was man will.


    Bernhard

  • Also ich sehe gerade nicht woher die Info kommt, daß die Quelle ein Textfeld ist.


    Ich finde da nur die Info, daß da drin ein Datum steht.


    Und klar kann ich im Backend reinschreiben was ich will, aber wenn da kein Datum drinsteht, dann ist DateTimeValue auch Nothing.
    Da steht nur bei Datum oder Zeitfeldern was drin

  • Das Original ist wohl hierher:
    maindoc.GetItemValue( "geburtstag" )(0)


    Und die ganze Sache dreht sich doch darum, dass in "geburtstag" ein String steht. Vulgo ist es ein Textfeld ...


    Bernhard

  • die Quelle im Hauptdokument ist ein Datumsfeld.
    wenn hier was anderes eingegeben wird, lässt sich das Dokument ja nicht speichern



    sind denn meine 4 Zeilen dann so in Ordnung?

  • Nun muss ich doch mit Entsetzen feststellen, dass ich Dussel die ganze Zeit zwei Threads aus dem Hinterkopf hier zu einem zusammengeführt habe. Ich bitte um Entschuldigung - hier ging es ja gar nicht um in DT values zu konvertierende Strings.


    Mea culpa - man sollte nicht zuviele Dinge gleichzeitig versuchen zu tun ...


    Bernhard