Ok, dann werden wir mal etwas fachlicher.
Natürlich ist die UniversalID der eindeutige Schlüssel zu einem Dokument in einer Notesdatenbank. Das heißt aber nicht, dass jede Datenbank diesen Schlüssel dazu verwendet, um Dokumente zuzuordnen. Ein ganz kleines Beispiel um das zu verdeutlichen.
In einer Datenbank (z.B. einem CRM) gibt es ein Kundendokument und viele zugehörige Auftragsdokumente. Die Auftragsdokumente werden im Kundendokument in einer eingebetten Ansicht angezeigt (das sollte Dir soweit bekannt vorkommen).
Nun kann die Anforderung bestehen, dass es eine Historisierung über die Inhalte der Kundendokumente gibt. Die Änderung eines Kundendokumentes produziert dann jeweils neue Kundendokumente mit einem zeitlichen Gültigkeitsbereich. Jedes dieser Kundendokumente ist ein eigenständiges Dokument in der Datenbank und hat selbstverständlich eine eigene UniversalID. Würde in den Auftragsdokumenten nur die UniversalID des (zum Zeitpunkt der Erstellung gültigen) Kundendokuments gespeichert werden, könnten im später aktuellen Kundendokument die alten Aufträge nicht zugeordnet werden.
Folglich wäre es günstiger, anstatt der technischen UniversalID die logische Kundennummer als Schlüssel zu verwenden. Eine Eindeutigkeit des Schlüssels ist nicht gefordert, da jedes Kundendokument den gleichen Schlüssel besitzen muss.
Soweit zur Theorie. Nun zur Praxis:
Du musst in der Datenbank die eingebettete Ansicht finden. Datenbank öffnen, STRG + SHIFT festhalten und im Menü Ansicht - Gehe zu gibt Dir eine Liste sämtlicher Ansichten der Datenbank, auch die verborgenen (zu erkennen an den Klammern um den Ansichtsnamen).
In der eingebetteten Ansicht wird es eine Kategorie geben, in der der Schlüssel steht (vermutlich die Kundennummer, aber natürlich auch möglich die UniversalID, glaube ich aber nicht -> Kundendokument löschen, neu erstellen -> neue UniversalID, keine Verbindung mehr zu den Aufträgen -> keine gute Struktur).
Dann musst Du im Kundendokument den Feldnamen des Feldes (konkret Item, aber wir wollen es nicht übertreiben mit der Genauigkeit) herausfinden, in dem der Schlüssel steht.
Ich nehme mal an, dass die Ansicht "auftraege" heißt, und das Feld mit dem Schlüssel "kundennummer". Dann würde folgendes Script (LotusScript, sinngemäß in VBA zu übersetzen) in etwa so aussehen. Das ganze natürlich ohne Fehlerhandling und ohne Gewähr auf Tippfehler.
Dim workspace As New NotesUIWorkspace
Dim kundenuidoc As NotesUIDocument
Set kundenuidoc = workspace.CURRENTDOCUMENT
Dim kundendoc As NotesDocument
Set kundendoc = kundenuidoc.Document
Dim crmdb As NotesDatabase
Set crmdb = kundendoc.ParentDatabase
Dim auftragview As NotesView
Set auftragview = crmdb.GetView ("auftraege")
Dim auftragcol As NotesDocumentCollection
Set auftragcol = auftragview.GetAllDocumentsByKey (kundendoc.Kundennummer (0), True)
Set auftragdoc = auftragcol.GetFirstDocument
Do While Not auftragdoc Is Nothing
'Hier verarbeitest Du die Auftragsdokumente
Set auftragdoc = auftragdoc.GetNextDocument (auftragdoc)
Loop
Set auftragcol = auftragview.GetAllDocumentsByKey(strDocID, True)
Genauso stelle ich mir das vor. Das geht davon aus, dass a) in strDocID auch was drin steht und b) die erste Ansichtsspalte diesen Wert auch enthält.
Stelle das im Zweifelfall über deinen Debugger sicher, notfalls via Msgbox:
Msgbox "Schlüssel: " & strDocID
Msgbox "Dokumente gefunden: " & auftragcol.Count
Set auftragdoc = auftragcol.GetFirstDocument
Do While Not auftragdoc Is Nothing
obj = auftragdoc.GetItemValue("OppID")
Debug.Print obj(0)
If obj = strDocID Then
[...]
End If
Set auftragdoc = auftragdoc.GetNextDocument(auftragdoc)
Loop
In obj ist jetzt ein Array drin. Den kannst du nicht (erfolgreich) mit einem String (strDocID ) vergleichen.
Versuche:
If auftragdoc.OppID(0) = strDocID Then
[...]
End If
Aber: Wofür machst du diese Prüfung? Du hast doch nur Dokumente gezogen, wo das der Falls ist. Oder nicht?
Gruß,
Mitch
In meinem Doc B (Opp.Position) finde ich kein Feld ParentDocumentUnid, die DocID des Doc A kommt nur im Feld OppID des Dok B vor.
Set NotesDocumentCollection = NotesDatabase.Search({DocID = "} & NotesDocumentA.UniveralID & {"}, Nothing, 0)
Das findet alle Dokumente in der Datenbank, die ein Feld DocID haben in welchem die DocumentUniqueID von Dokument A steht.