Lotus Notes / Domino 10 > ND10: Entwicklung

"The Document is not in view" bei zwei While-Schleifen

<< < (4/4)

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