Lotus Notes / Domino 10 > ND10: Entwicklung
"The Document is not in view" bei zwei While-Schleifen
DominoDancing:
Hallobrac,
um mein Wünschelrutensyndrom nicht weiter zu verstärken: Bitte prüfe zunächst einmal, ob zum Zeitpunkt des Auftretens des Fehlers view1 einen gültigen Wert enthält. Wenn ja, wie lautet die parentview des doc1 zum Fehlerzeitpunkt?
Liebe Grüße
René
Riccardo Virzi:
Bekommst Du bei dem Code auch eine Fehlermeldung?
Meine Änderung: die erste Schleife geht über alle Dokumente, liest nur die Schlüsselwerte aus und schreibt sie in einen String, mit Kommas getrennt. Das ist nicht ideal für die Produktion! Es kommt auf die Anzahl der Dokumente und die Länge der Keys an und in den Schlüsseln darf kein Komma verwendet werden. Sauberer wäre ein Array oder eine Liste, aber zum Test sollte das reichen.
In der zweiten Schleife wird jeder Schlüssel in der zweiten Ansicht mit GetDocumentByKey gesucht und dann kann die Verarbeitung durchgeführt werden.
--- Code: ---Sub Click(Source As Button)
Dim session As New NotesSession
Dim doc1 As NotesDocument
Dim doc2 As NotesDocument
Dim nextDoc1 As NotesDocument
Dim view1 As NotesView
Dim view2 As NotesView
Dim db As NotesDatabase
Dim keys as String
Dim keylist as Variant
Set db = session.CurrentDatabase
Set view1=db.GetView("vwhonorarabrechnungen_kdnr_rechnung")
Set view2=db.GetView("vwhonorarabrechnungen_status")
view1.AutoUpdate = False
Set doc1 = view1.GetFirstDocument
REM Erste Schleife, um die Keys einzusammeln
While Not (doc1 Is Nothing)
keys = keys + "," + CStr( doc1.GetItemValue( "<KEY-FELD>" )( 0 ) )
Set doc1 = view1.GetNextDocument( doc1 )
Wend
REM Aus dem Komma getrennten String, ein Array machen
keylist = Fulltrim( Split( keys, "," ) )
REM Zweite Schleife, um die Keys einzusammeln
forall key in keylist
Set doc2 = view2.GetDocumentByKey( key, True )
Print "Verarbeitung"
End Forall
End Sub
--- Ende Code ---
Obrac:
So, jetzt erstmal ein dickes Danke an alle, die mitüberlegt haben. Dank euch klappt es jetzt. Letztlich hat DominoDancings Ansatz mit "GetDocumentByKey" doch funktioniert, denn die Fehlermeldung "Function Requires a Valid ADT Argument" basierte auf einer fehlerhaften Formatierung der ersten Ansichtspalte. Als Spaltenwert und Variable ein String waren, hat es tatsächlich geklappt. doc1 und doc2 sowie deren Parentviews hatten die richtigen Werte und alles wurde korrekt ausgelesen.
@pantelis.botsas: Danke auch nochmal an dich für die Anleitung des Alternativweges. Das wird für mich in Zukunft dennoch interessant sein bei anderen Anforderungen. Genauso an @Riccardo Virzi: Die Arraylösung sieht auch vielversprechend. Dafür hätte ich mein Skript leider ziemlich umbauen müssen, aber das ist sicherlich auch ein Weg.
Schönen Tag noch euch allen und nochmal thanks.
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln