Domino 9 und frühere Versionen > ND6: Entwicklung

Fehler bei PicklistCollection (Mit Lösung)

(1/2) > >>

RalfK:
Hallo,

ich habe (testhalber) 2 Masken geschrieben. In der Maske1 gibt es die Felder "Name" und "Strasse". Maske2 soll mit den Daten aus Maske1 gefüllt werden (hat auch die Felder "Name" und "Strasse".

Zusätzliche gibt es eine Ansicht (für die Picklist) namens "export"

Ich möchte nun per Schaltfläche in Maske2 eine Picklist aufrufen und 1 Dokument auswählen. Es sollen beide Spalten übernommen werden. Folgendes Script.

Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim currdoc As NotesDocument
   Dim doc As NotesDocument
   Dim col As NotesDocumentCollection
   Dim item1 As NotesItem
   Dim item2 As NotesItem
   
   
   Set uidoc = ws.CurrentDocument
   Set currdoc = uidoc.Document
   Set item1 = currdoc.GetFirstItem("Name")
   Set item2 = currdoc.GetFirstItem("Strasse")
   
   Set col = ws.PickListCollection(1, False, db.server, db.name , "export", _
        "Auswahl", "Bitte auswählen:")
   
   Set doc = col.GetFirstDocument
   While Not (doc Is Nothing)
      Call item1.AppendToTextList(doc.Name(0))
      Call item2.AppendToTextList(doc.Strasse(0))
   Wend

Ich erhalte nun die Meldung "Variant does not contain an object". Laut Debugger in der Picklist-Zeile.

Weiss jemand, wo der Fehler liegt. Ich werde aus der Meldung irgendwie nicht schlau.

Grüße
Ralf

Thomas Schulte:
wo ist dein Database Object initialisiert?

RalfK:
Oh ich hatte es übersehen.

Dim db As NotesDatabase

Nun, zumindest ist nun die Fehlermeldung eine andere. "Object variable not set"

Das lässt ja darauf schliessen, dass der Wert eine Variable "leer" ist. Es kann ja nur die Variable col sein, obwohl ich diese ja per Set angesprochen haben. Mit db.server und db.filepath greife ich ja auf die lokale DB zu. Also liegt der Fehler in der Ansicht?

Grüße

tfrenz:
Hallo,
wie Thomas Schulte schon schrieb, die Initialisierung fehlt.
Nicht nur die Deklaration, sondern auch die Zuweisung der DB.

Set db = Session.CurrentDatabase

Oder ähnliches, wenn es eine andere sien soll.

Thomas Frenz

RalfK:
Ihr habt natürlich recht. Vielen Dank.

Ich sollte mich mehr konzentrieren beim scripten. Das (funktionstüchtige) Script sieht nun so aus:

        Dim db As NotesDatabase
   Dim session As New NotesSession
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim currdoc As NotesDocument
   Dim doc As NotesDocument
   Dim col As NotesDocumentCollection
   Dim item1 As NotesItem
   Dim item2 As NotesItem
   
   Set db = Session.CurrentDatabase
   Set uidoc = ws.CurrentDocument
   Set currdoc = uidoc.Document
   Set item1 = currdoc.GetFirstItem("Name")
   Set item2 = currdoc.GetFirstItem("Strasse")
   
   
   Set col = ws.PickListCollection(1, False, db.Server, db.FilePath , "export",
        "Auswahl erstellen", "Bitte auswählen:")
   
   Set doc = col.GetFirstDocument
   Call item1.AppendToTextList(doc.Name(0))
   Call item2.AppendToTextList(doc.Strasse(0))

Eine abschließende Frage noch. Wenn ich auf eine andere Datenbank zugreifen will, wie weise ich diese dann zu?

Grüße

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln