Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Wilhelm Weber am 10.09.10 - 12:53:19
-
hallo zusammen,
folgendes möchte ich machen.
Aus dem aktuellen Dokument zwei Felder mit einfachem Text-Wert auslesen.
Dann in eine andere Ansicht wechseln. Dort alle Dokumente durchsuchen. In diesen dokumenten gibt es felder mit mehrfachtextwerten. Sollte in einem dieser Dokumente die beiden einfach werte in diesen Mehrfachwerten enthalten sein, soll im aktuellen Dok ein drittes feld mit einem wert des Doks aus der view gefüllt werden.
Mein problem ist wohl , dass ich sowas wie @Ismember nicht nach Skript bekommen.
hier der Code bisher
Dim ws As New NotesUIWorkspace
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim loopdoc As NotesDocument
Dim view As NotesView
Dim value1 As Variant
Dim value2 As Variant
Set db = session.CurrentDatabase
Set doc = ws.CurrentDocument.Document
value1 = doc.feld1(0) ' EInfachwert
value2 = doc.feld2(0) ' Einfachwert
Set view = db.GetView("suche")
Set loopdoc = view.GetFirstDocument()
While Not(loopdoc Is Nothing)
If loopdoc.mehrfachwert1(0) = value1 & loopdoc.mehrfachwert2(0) = value2 Then
doc.feld3 = loopdoc.feldxy
Else
Set loopdoc = view.GetNextDocument(loopdoc)
End If
Wend
-
Ich glaube die Funktion "ArrayGetIndex" könnte dir weiter helfen...
Gruß,
Mitch
-
Hallo Mitch,
danke für den Tip.
hab rumprobiert, aber irgendwie passt es nicht ...?
hast du noch mehr Infos ?
Grüße
Wilhelm
-
Was passt nicht? ArrayGetIndex ist das, was Du gesucht hast!
Bernhard
-
Hallo Bernhard,
habe es so probiert..
If Arraygetindex(mehrfachwert1(),value1) <> Null & Arraygetindex(mehrfachwert1(),value2) <> Null Then
doc.feld3 = loopdoc.feldxy
Fehlermeldung: Wrong nummer of array subscripts..
Bin nur Admin..:-(
-
Wirklich so?
Wie hast Du denn mehrfachwert1 deklariert und wie weist Du einen Wert zu?
Bernhard
-
Sorry Bernhard,
eher so
If Arraygetindex(loopdoc.mehrfachwert1(),value1) <> Null & Arraygetindex (loopdoc.mehrfachwert2(),value2) <> Null Then
doc.feld3 = loopdoc.feldxy
Fehlermeldung bleibt gleich
-
Wilhelm, Du hast zwei Fehler in Deinem Code - ich war auf etwas anderes fixiert und habe das schlicht übersehen:
Deine Notation des Items ist verkehrt - loopdoc.mehrfachwert1 wäre richtig. Die von Dir verwendeten Klammern implizieren den Zugriff auf ein (gar nicht angegebenes) Element des Arrays (was jedes Item ausser RichText Items sind). Die Fehlermeldung erklärt sich damit von alleine, oder?
Weiter: NULL kannst Du so in LS nicht verwenden. Mach das wie folgt:
If Isnull (Arraygetindex (quelle, suchwert) = True Then
... nichts gefunden
Else
... Bingo!
End If.
Und dann funktioniert auch Dein Code ;-)
HTH,
Bernhard
-
Probier ich heute abend von zu Hause mal aus, vielen Dank.
-
Genau, so wie Bernhard es sagt.
Kleiner Zusatz: Falls du im Prinzip noch das Konstrukt wie aus deinem ersten Post verwendest, wirst du in einer Endlosschleife landen falls die Bedingung True ergibt, da du in dem Fall dann kein "GetNextDocument" verwendest und die While-Schleife niemals Nothing finden wird... ;)
-
im moment lande ich bei einem Type Mismatch, werde aber weiter versuchen.
der Suchwert ist ein einfaches text-Feld ohne Mehrfachwert. Hakt es daran ?
-
Du musst schon den Code zeigen, das hilft immer.
Falls du mit "Suchwert" den zweiten Parameter von ArrayGetIndex meinst und da direkt einen Feldwert verwenden willst, musst du da schon die (0) verwenden, um an den Feldwert zu kommen.
Also entweder mit einer Variablen:
If IsNull(ArrayGetIndex(doc.Fieldname, variable)) Then
'Nix gefunden
Else
'Was gefunden
End If
Oder eben (mit einem Feldwert):
If IsNull(ArrayGetIndex(doc.Fieldname, doc2.OtherFieldname(0))) Then
'Nix gefunden
Else
'Was gefunden
End If
Klar soweit? :)
Edit: Yay. Endlich. Vom Frischling zum Junior-Mitglied in nur knapp über acht Jahren! :D
-
Noch ein Fehler ist die Verbindung zweier Bedingungen mit &, das geht so mit Formelsprache. In Script verwendest Du And.
If Bedingung1 And Bedingung2 Then
End If
-
Shit, was man alles übersieht. Schön, dass bei AtNotes immer mehrere drüberschauen und sich gegenseitig ergänzen - sogar in Norwegen :) Danke, Peter!
Bernhard
-
Danke an alle !!
der Fehler ist weg, jetzt muss ich noch die Endlosschleife entsorgen und ein bischen Logik machen.
Grüße
Wilhelm