Domino 9 und frühere Versionen > ND6: Entwicklung
Positionenvergleich innerhalb eines Feldes
Lotus_Notes_Newbie:
Ich habe eine View "Versionen" die jede Menge Dokumente beinhaltet die alle über die Felder "VersionVon", "VersionBis" und "AlleKompatiblenVersionen"verfügen. z.B. steht im "VersionVon" Feld '1.2' drin im "VersionBis" Feld '2.5', die "AlleKompatiblenVersionen" Felder sind noch alle leer. Und um genau die geht es.
In dieses Feld sollen nämlich automatisch alle Versionen zwischen dem "VersionVon" Wert und dem "VersionBis" Wert hineingeschrieben werden. Da die Werte jedoch nicht durchgehend sind, also nicht 1.1, 1.2, 1.3 sondern durchaus auch mal eine Version 1.36b auftauchen kann sind alle möglichen Versionen im "AlleVersionen" Feld des Profildokumts "ProfileDoc" abgespeichert.
Deshalb soll der Agent nachdem er den ersten Wert des "VersionVon" Feldes eingelesen hat nach diesem Wert im "AlleVersionen" Feld des Profildokuments suchen und sich nach finden dessen die Position im Feld merken. Danach soll dann der Wert des "VersionBis" Feldes eingelesen werden und ebenfalls nach dessen Position im "Alle Versionen" Feld gesucht werden. Jetzt hat der Rechner ja die beiden Positionen und soll jetzt alle Werte zwischen diesen beiden Positionen auslesen und in das "AlleKompatiblenVersionen" Feld eintragen.
So stell ich mir zumindest in der Theorie vor das das funktionieren könnte. Deshalb die Frage an die Experten, ist es möglich, und wenn ja wie programmiere ich das, vor allem zu den Positionsbestimmungen innerhalb eines Feldes und dem Vergleich von diesen habe ich nämlich noch nichts gefunden.
animate:
geht ziemlich easy mit Lotusscript
mit
Dim vaFeldvalue As Variant
vaFeldValue = doc.getItemValue("Feldname")
bekommst du ein Array mit den Werten, die in dem Feld stehen
mit der ArraygetIndex-Funktion bekommst du die Position eines Werts innerhalb eines Arrays
vaPosition = Arraygetindex(vaFeld, "Wert1")
gibt dir die Position von "Wert1" zurück
Wenn in deinem Feld die Werte "Wert1", "Wert2", ..., "Wert9" stehen wäre es die 0 (Arrays fangen bei 0 an zu zählen)
du holst dir also die beiden Positionen und machst dann ne Schleife
For i = position1 to position2
Next
und liest in der Schleife die Werte des Felds aus
sWert = vaFeldValue(i)
Einigermaßen klar?
Lotus_Notes_Newbie:
So hier ist mal mein bisheriger Quellcode. Er kompiliert zwar, läuft aber noch nicht richtig, sprich er tägt die Werte nicht in das "AlleKompatiblenVersionen" Feld ein. Könnt ihr mir vielleicht sagen wo in meinem Quellcode der Fehler steckt.
Sub Initialize
Dim workspace As NotesUIWorkspace
Dim session As NotesSession
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc_coll As NotesDocumentCollection
Dim doc As NotesDocument
Dim document As NotesDocument
Dim view As NotesView
Dim item1 As NotesItem
Dim item2 As NotesItem
Dim Eintrag As NotesItem
Dim MoeglicheVersionen As Variant
Dim Position1 As String
Dim Position2 As String
Dim Ergebnis As String
Dim KompatibleVersionen As Variant
Set session = New NotesSession
Set db = session.CurrentDatabase
Set doc_coll = db.AllDocuments
Set view = db.GetView("Versionen")
Set document = view.GetFirstDocument
While Not (document Is Nothing)
Set item1 = document.GetFirstItem("VersionVon")
Set item2 = document.GetFirstItem("VersionBis")
Wend
Set doc = db.GetProfileDocument("ProfileDoc")
Set MoeglicheVersionen = doc.getItemValue("AlleVersionen")
Position1 = Arraygetindex(MoeglicheVersionen, item1)
Position2 = Arraygetindex(MoeglicheVersionen, item2)
For KompatibleVersionen = Position1 To Position2
Ergebnis = MoeglicheVersionen(KompatibleVersionen)
Set Eintrag = document.ReplaceItemValue("AlleKompatiblenVersionen","Ergebnis")
Next
End Sub
klaussal:
.. so auf die schnelle:
Set Eintrag = document.ReplaceItemValue("AlleKompatiblenVersionen","Ergebnis")
Ergebnis nicht in "gänsebeinchen"...
koehlerbv:
Einmal diesen, und zum anderen: Wo wird denn die Änderung des Dokumentes gespeichert ?
Bernhard
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln