Export des Adressbuchs als VCards

  • Hallo zusammen,


    ich würde (unter Notes 7.0.3) gerne meinen Adressbestand exportieren. Wenn ich den Export als VCard 2.1/3.0 ausführe stimmt ein Teil der Geburtstage nicht. Die Personen haben dann einen Tag früher Geburtstag. Erstaunlicherweise ist der Output als Structured Text richtig.


    Nun habe ich festgestellt, dass bei den betroffenen Personen im Feld Birthday folgendes steht "05.02.1974 00:00:00 CET". Bei Personen, bei denen im Feld nur "06.03.1975" steht, produziert der Export die richtigen Dokumente bzw. Werte.
    Da ich der Exportroutine wahrscheinlich nicht beikomme (ist ja hart codiert...) muss ich wohl mein Adressbuch überarbeiten.
    Öffne ich nun ein Dokument und ändere den Geburtstag einen Tag früher und dann wieder auf den ursprünglichen Wert, so steht der richtige Wert im Feld Geburtstag.
    Natürlich könnte ich mir einen Agenten schreiben, der mir den Wert verändert, zurückändert und dann das Dokument speichert. Nur ist für mich die Frage: was ist dann im Winter? Wenn die Sommerzeit nicht mehr aktiv ist? Habe ich das Problem dann wieder?


    Wer hat eine Idee?


    Viele Grüße


    Christian

    OS: XP & 2k3 TS über ICA
    Notes: 6.5.5 & 8.0.2
    Domino: 8.0.2FP1
    ...

    • Offizieller Beitrag

    Wie sind denn diese Datumswerte mit Uhrzeit in das Adressbuch gekommen?


    Ich denke in die Richtung, dass diese per Agent importiert wurden und dabei wurde die Zeitkomponente nicht entfernt.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hallo Dirk,


    vielen Dank für Deine rasche Antwort. Ich kann mich nicht erinnern, die Datumswerte importiert zu haben. Jedoch wurde Notes mit einem PDA synchronisiert. Vielleicht hat es da in der Vergangenheit etwas "verhagelt". Oder bei der Bereinigung des Adressbuchs mit einem Agenten habe ich die Datumswerte falsch reingeschrieben.


    Mir ist aufgefallen, dass seit einigen Wochen die Anzeige der Geburtstage im Adressbuch eben auch in der Form "02.05.1975 00:00:00" erscheinen. Ich nehme an seit dem Beginn der Sommerzeit.


    Welche Möglichkeiten gibt es, die Werte wieder zu "kastrieren"? Habe mal versucht einen Formelagenten zu schreiben, der einfach das Feld mit "@Adjust" ändert. Jedoch waren weder meine Bemühungen mit den optionalen Parametern [INGMT] bzw. [INLOCALTIME] als auch ohne erfolglos. :(
    Bekomme ich die Werte nur mit LotusScript bereinigt?


    Viele Grüße


    Christian

    OS: XP & 2k3 TS über ICA
    Notes: 6.5.5 & 8.0.2
    Domino: 8.0.2FP1
    ...

    • Offizieller Beitrag

    Ja es dürfte nur mit LotusScript gehen.


    Benutze NotesDateTime.SetAnyTime um die Zeitkomponente zu entfernen. Danach musst Du nur NotesDateTime.LsLocalTime wieder ins Feld schreiben.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hallo Dirk,


    herzlichen Dank für Deine Hinweise. Habe es nun so gelöst.

    Code
    Sub Initialize	Dim db As NotesDatabase	Dim s As New NotesSession	Set db = s.CurrentDatabase	Dim col As NotesDocumentCollection	Dim doc As NotesDocument	Dim dt As New NotesDateTime("")	Dim item As NotesItem	Dim subject As String	Print "Geburtstage werden bearbeitet..."	Set col = db.Search( {Birthday != ""} , Nothing, 0)	Set doc = col.getfirstdocument	Do While Not doc Is Nothing		subject = "Geburtstag - " + doc.FirstName(0) + " "  + doc.LastName(0)		Print subject & " wird bearbeitet..."				Set dt = doc.GetItemValueDateTimeArray("Birthday")(0)		Call dt.SetAnyTime		Set item = doc.ReplaceItemValue("Birthday", dt.LSLocalTime)		Call doc.Save( True, False, True )		Set doc = col.GetNextDocument(doc)	Loop	Print "Die Geburtstage wurden bearbeitet...."End Sub


    Jedoch habe ich mit der Zeile

    Code
    Set item = doc.ReplaceItemValue("Birthday", dt.LSLocalTime)

    so meine Probleme. Schreibe ich nur

    Code
    Set item = doc.ReplaceItemValue("Birthday", dt)

    stimmen die Daten. Mit dem "LSLocalTime" werden ja die Zeitzonenwerte wieder reingeschrieben.


    Ich würde dahin tendieren, das "LSLocalTime" wegzulassen. Oder handle ich mir damit weitere Probleme ein? Beispielsweise bei der Umstellung auf Winterzeit?


    Viele Grüße


    Christian

    OS: XP & 2k3 TS über ICA
    Notes: 6.5.5 & 8.0.2
    Domino: 8.0.2FP1
    ...