Domino 9 und frühere Versionen > ND9: Entwicklung

Geöffnetes Dokument aus Domino Datenbank auslesen

<< < (4/5) > >>

ascabg:
Hallo,

Dazu musst du dir bewusst machen, das die Methode "NotesDocument.GetFirstItem" die keine Werte zurueckliefert.
Diese liefert dir nur ein weiteres Objekt der Klasse "NotesItem" zurueck.

Wenn du Werte aus den Items auslesen willst, dann brauchst du "NotesDocument.GetItemValue"
Und hier muss du dir bewusst machen, dass du auf jeden Fall einen Array zurueckbekommst.


Andreas

Mitch:
Huhu,

ich verstehe nicht ganz was du machst.


--- Zitat von: Tiger955 am 07.07.15 - 09:32:43 ---[...]
strDocID = uidoc.FIELDGETTEXT("DocID")
[...]
Set auftragcol = auftragview.GetAllDocumentsByKey("OppID", True)

--- Ende Zitat ---

Du ziehst dir eine ID, suchst in der Ansicht aber nach einem festen String "OppID". Das sieht seltsam aus. Sicher, dass du das möchtest? Ich hätte in der ersten Ansichtsspalte die ID erwartet und dann entsprechend nach der ID gesucht und alle zugehörigen Dokumente zu finden.


--- Zitat von: Tiger955 am 07.07.15 - 09:32:43 ---Der Code läuft ohne Fehler durch (was noch nicht heißt, dass ich es richtig gemacht habe!), aber bringt nichts.

--- Ende Zitat ---

Was sagt denn der Debugger deiner Wahl? Findet er Dokumente? Ich tippe ja auf "Nein", wegen oben genanntem Problem.

Gruß,

Mitch

Tiger955:
Hallo Andreas!

Danke für Deine Rückmeldung, es wäre mir immens geholfen mit einem praktischen Beispiel, z.B. wie die Codezeile aussieht.

Ich habe folgendes versucht, leider ohne Erfolg (keine Fehlermeldung, aber obj="")

Set auftragcol = auftragview.GetAllDocumentsByKey(strDocID, True)  --> strDocID  ist die ID der Opportunity und steht im Feld OppID der Opp-Positionen
Set auftragdoc = auftragcol.GetFirstDocument
Do While Not auftragdoc Is Nothing
     obj = auftragdoc.GetItemValue("OppID")   --> in obj sollte der Schlüssel, der gleich ist mit strDocID zu finden sein. obj bleibt aber ""
    Debug.Print obj(0)
    If obj = strDocID Then   --> daher geht es hier nicht weiter
        'Hier verarbeitest Du die Auftragsdokumente
        Set objOppPosItemNo = auftragdoc.GetFirstItem("OppPosItemNo")
        strOppPosItemNo = objOppPosItemNo.Text
        MsgBox strOppPosItemNo
    End If
   Set auftragdoc = auftragdoc.GetNextDocument(auftragdoc)
Loop

Danke für Deine Hilfe.
Michael

ascabg:
Hallo,

Wie hast du denn obj definiert? (als was ==> String, Variant, ...)

Und hier

--- Zitat ---If obj = strDocID
--- Ende Zitat ---
willst du einen Array mit einem String vergleichen. Das wird or den Baum laufen.



Andreas

Mitch:

--- Zitat von: Tiger955 am 07.07.15 - 11:54:34 ---Set auftragcol = auftragview.GetAllDocumentsByKey(strDocID, True)

--- Ende Zitat ---
Genauso stelle ich mir das vor. Das geht davon aus, dass a) in strDocID auch was drin steht und b) die erste Ansichtsspalte diesen Wert auch enthält.

Stelle das im Zweifelfall über deinen Debugger sicher, notfalls via Msgbox:

--- Code: ---Msgbox "Schlüssel: " & strDocID
Msgbox "Dokumente gefunden: " & auftragcol.Count

--- Ende Code ---


--- Zitat von: Tiger955 am 07.07.15 - 11:54:34 ---Set auftragdoc = auftragcol.GetFirstDocument
Do While Not auftragdoc Is Nothing
     obj = auftragdoc.GetItemValue("OppID")
    Debug.Print obj(0)
    If obj = strDocID Then
       [...]
    End If
   Set auftragdoc = auftragdoc.GetNextDocument(auftragdoc)
Loop

--- Ende Zitat ---
In obj ist jetzt ein Array drin. Den kannst du nicht (erfolgreich) mit einem String (strDocID ) vergleichen.
Versuche:

--- Code: ---If auftragdoc.OppID(0) = strDocID Then
     [...]
End If

--- Ende Code ---

Aber: Wofür machst du diese Prüfung? Du hast doch nur Dokumente gezogen, wo das der Falls ist. Oder nicht?

Gruß,

Mitch

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln