Warum gelingt das Update eines Dokumentenfeldes nicht?

  • Hallo an alle!
    Ich versuche aus einer AdressDB die E-Mail zu ermitteln und sie in eine zweite DB zu übertragen.
    Das lesen der Quelle und das Positionieren des Ziels arbeitet. Doch das Aktualisieren des Feldinhaltes im Ziel arbeitet nicht.


    Email = docAdr.GetItemValue("MailAdress")
    call docVip.ReplaceItemValue("MailAdress", Email)
    call docVip.Save(True, True )


    Nach dem Handbuch sollte jetzt der Zugriff:


    Test = docVip.GetItemValue("MailAdress")


    den eingestellten Wert in Test liefern. Doch der Feldinhalt hat sich nicht geändert.


    Ist das Item dagegen noch nicht in der DB, dann wird es sauber angelegt.


    Was mache ich falsch ?


    MF

    • Offizieller Beitrag

    Willkommen im Forum.


    Hast Du es schon mal mit dem Debugger durchlaufen lassen und dabei das Feld MailAdress im Dokument docVip beobachtet?
    MailAdress ist auch kein RT-Feld?


    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

  • Danke für die prompte Antwort.


    Ich habe das Programm im Debugger geprüft und mich davon überzeugt, dass sonst keine Fehler enthalten sind.


    Die Aufgabe ist der Abgleich zweier Notes-Adressbücher. Das betroffene Feld ist das Standart MailAddress-Feld:
    Hier sollte jetzt eigentlich das Bild erscheinen:


    MF

  • Die Variable Email ist vom Typ Variant und stellt einen Mehrfachwert dar.


    Ich habe Sie durch zwei Variable EmailA und EmailV ersetzt, damit ich in einer MessageBox die Ergebnisse angezeigt bekomme.


    Vielleicht vereinfacht die Darstellung des gesamten Programmentwurs die Diskussion:


    Das Programm macht zur Kontrolle für jeden verarbeiteten Satz eine MessageBox auf und zeigt an, was passiert ist.
    Wenn alles zu meiner Zufriedenheit arbeitet, dann wollte ich die Box abschalten.


    Sub Initialize
    Dim session As New NotesSession
    Dim dbAdr As NotesDatabase
    Dim dbVip As NotesDatabase
    Dim viAdr As NotesView
    Dim viVip As NotesView
    Dim eAdr As NotesViewEntry
    Dim eVip As NotesViewEntry
    Dim vecAdr As NotesViewEntryCollection
    Dim vecVip As NotesViewEntryCollection
    Dim docVip As NotesDocument
    Dim docAdr As NotesDocument

    Dim crlf As String
    crlf$ = Chr(13) & Chr(10) ' Carriage return/line feed
    Dim KdNR As Variant
    Dim boxType As Long, answer As Integer
    boxType& = 4'MB_YESNO + MB_ICONQUESTION
    Dim EmailA As Variant
    Dim EmailV As Variant

    Set dbVip = session.CurrentDatabase
    Set dbAdr = session.GetDatabase("cadom0","Adressen.nsf")
    Set viAdr = dbAdr.GetView("Kunden")
    Set viVip = dbVip.GetView("CaKu")
    Set vecVip = viVip.AllEntries
    Set eVip = vecVip.GetFirstEntry()
    Set docVip = eVip.Document

    Do While Not (docVip Is Nothing)
    KdNr = docVip.GetItemValue("KdNr")
    key = KdNr(0)
    Set docAdr=viAdr.GetDocumentByKey(key)
    If Not ( docAdr Is Nothing) Then
    EmailA = docAdr.GetItemValue("MailAddress")
    Call docVip.ReplaceItemValue("MailAdress",EmailA)
    Call docVip.Save(True,True)
    EmailV = docVip.GetItemValue("MailAddress")
    Else
    EmailA(0) = "Nicht gefunden"
    End If
    answer% = Messagebox("Kundennummer:=" & KdNr(0) & crlf$ & _
    "EmailA:=" & EmailA(0) & crlf$ & _
    "EmailV:=" & EmailV(0) & crlf$ & _
    "Weiter machen ?", boxType&,"Continue?")
    'If answer% = IDNO Then
    If answer% = 7 Then
    Exit Do
    End If
    Set eVip = vecVip.GetNextEntry(eVip)
    If eVip Is Nothing Then
    Exit Do
    End If
    Set docVip = eVip.Document
    Loop

    End Sub


    Eine MessageBox habe ich als Beispiel beigefügt.


    Ich freue mich schon auf die nächsten Tipps!


    MF

  • Vielen Dank !!


    Da hat doch wirklich wieder die Legastenie zugeschlagen!


    Nachdem der fehlende Buchstabe eingesetzt und so das Problem behoben ist, arbeitet das Programm, wie es soll!


    Danke.