Hi,
ging nicht schneller. Versuchs mal mit dieser Routine, Du brauchst aber eine versteckte Ansicht, die die Schlusselfelder sortiert in der ersten Spalte stehen hat.
Falls noch fragen einfach anmailen, ansionsten sind die Codezeilen beschrieben.
Sub aktualisieren(_
Schluessel, _
FeldListe, _
Datenbank, _
CurDoc, _
FormName _
)
'Modul zum Aktualisieren von
'Fremdschlüsseln in einem Dokument
'Achtung,
'die Ansicht "SchluesselPick"
'sollte in jeder Datenbank vorhanden sein,
'in der gelesen wird.
'Parameter:
'1. Schlüssel für Dokument aus dem aktualisiert wird
'1. Feldliste
'3. Name der Datenbank in der gesucht werden soll
'4. Dokument das gerade bearbeitet wird
Dim Session As New NotesSession
Dim PickView As NotesView
Dim CurDB_ As NotesDatabase
Dim LookDB_ As NotesDatabase
Dim SuchDoc As NotesDocument
Dim Item As NotesItem
Dim LookDBName_ As String
Dim Server_ As String
Dim FilePath_ As String
Dim DataPath_ As String
Dim FeldName As String
Dim Wert As Variant
Dim i As Integer
Dim KeyArray(1) As String
'Geöffenete Datenbank
Set CurDB_ = Session.CurrentDatabase
'Server
Server_ = CurDB_.SERVER
'Name Data Pfad festlegen
i = Instr( CurDB_.Filepath, CurDB_.Filename) - 1
FilePath_ = Ucase(Left( CurDB_.Filepath, i))
i = Instr( FilePath_, "\DATA\") + 5
DataPath_ = Left( FilePath_, i)
'Name Datenbank aus der gelesen wird festlegen
LookDBName_ = Filepath_ + Datenbank
'Datenbank aus der gelesen wird öffnen
Set LookDB_ = New NotesDatabase(Server_, LookDBName_ )
'Ansicht öfnen, aus der gelesen wird
Set PickView = LookDB_.GetView("SchluesselPick")
KeyArray(0) = Schluessel
KeyArray(1) = Formname
'Schlüsel Dokument aus dem Akutalisiert wird suchen
Set SuchDoc = PickView.GetDocumentByKey(KeyArray, True)
'wenn Dokument vorhanden ist
If Not (SuchDoc Is Nothing) Then
'Alle Felder aus Schlüssel Dokument holen und
'und iem geöffneten Dokument aktualisieren.
For i = 0 To Ubound(FeldListe)
'Name des Feldes aus der Liste an Position i holen
FeldName = FeldListe(i)
'Wert aus Schlüssel Dokument holen
Wert = SuchDoc.GetItemValue(Feldname)
'Wert in Dokument das geöffnet ist aktualisieren
Set Item = CurDoc.ReplaceItemValue( Feldname, Wert(0) )
Next
End If
'Wenn Datenbank aus der gelesen wird
'nicht die gleiche ist, in der das
'Dokument zum aktualisieren ist,
'dann Datenbank wieder schließen
If Ucase(CurDB_.Filepath) <> Ucase(LookDBName_) Then
Call LookDB_.Close()
End If
End Sub