Versuch mal dem folgenden Code. Er wird in einen Button eingefügt. Folgende Felder müssen in der Abfragemaske (ist kein Profildokument) vorhanden sein:
Produktbeschreibung
NeueVersion
Ergebnis (für die Liste die ausgegeben wird)
Ist vielleicht nicht die schönste Lösung, aber mal als vorläufiger Anhaltspunkt. Es kann sein, dass einiges nicht funktioniert, weil ich den Code nur getippt und nicht getesten habe. Also berichte wenn's nicht klappt. Ich hoffe ich habe ihn ausreichen kommentiert.
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim thisDoc As NotesUIDocument
Set thisDoc = ws.CurrentDocument 'aktuelles Dokument (Abfragemaske), um Werte aus Feldern auszulesen
Dim s As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim dc As NotesDocumentCollection 'DocumentCollection für alle Dokumente dieses Produkts und Vertragstyp "TREND"
Dim doc As NotesDocument
Dim keyArray(1) As String 'Schlüssel für die Suche
Dim neueversion As Double, instversion As Double
Dim ergebnis As String 'dieser String wird nachher in das Feld Ergebnis geschrieben
Set db = s.CurrentDatabase
'die Ansicht (ich hab sie derweil 'ProjektSuchen' genannt) muss folgerndermaßen aussehen
'1. Spalte: Produkt, 2. Spalte: Vertragstyp, beide spalten sortiert (aufsteigend oder absteigend, egal)
Set view = db.GetView("ProjektSuchen")
keyArray(0) = thisDoc.FieldGetText("Produktbeschreibung") 'oder wie das Feld in der Abfragemaske auch immer heißen soll
keyArray(1) = "TREND"
'nun wird gesucht
Set dc = view.GetAllDocumentsByKey(keyArray, True) 'der letzte Parameter gibt an ob exakt gesucht werden soll, das musst du entscheiden
Set doc = dc.GetFirstDocument 'erstes Dokument der dc
'nun beginnt die Schleife die alle Dokumente mit der Versionsnummer vergleicht
While Not (doc Is Nothing)
neueversion = thisDoc.Document.GetItemValue("NeueVersion")
instversion = doc.GetItemValue("InstallierteVersion")
'Vergleich der beiden Versionen
If instversion < neueversion Then
'installierte Version ist kleiner, also werden Werte dieses Dokument dem String hinzugefügt
'ich bin davon ausgegangen, dass es in dem Dok. die Felder Kunde, Produkt, InstallierteVersion gibt
'Chr(9) ist ein Tabulator, Chr(10) eine Zeilenschaltung
ergebnis = ergebnis & doc.Kunde(0) & Chr(9) & doc.Produkt(0) & Chr(9) & doc.InstallierteVersion(0) & Chr(10)
End If
Set doc = dc.GetNextDocument(doc) 'nächstes Dokument der dc
Wend
Call thisDoc.FieldSetText("Ergebnis", ergebnis)
End Sub
Mahlzeit
Manuel