Autor Thema: Fehler bei PicklistCollection (Mit Lösung)  (Gelesen 2047 mal)

Offline RalfK

  • Frischling
  • *
  • Beiträge: 49
  • Geschlecht: Männlich
Fehler bei PicklistCollection (Mit Lösung)
« am: 09.10.07 - 11:53:30 »
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
« Letzte Änderung: 10.10.07 - 09:38:29 von RalfK »

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Fehler bei PicklistCollection
« Antwort #1 am: 09.10.07 - 11:56:08 »
wo ist dein Database Object initialisiert?
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline RalfK

  • Frischling
  • *
  • Beiträge: 49
  • Geschlecht: Männlich
Re: Fehler bei PicklistCollection
« Antwort #2 am: 09.10.07 - 12:10:45 »
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

Offline tfrenz

  • Aktives Mitglied
  • ***
  • Beiträge: 243
  • Geschlecht: Männlich
Re: Fehler bei PicklistCollection
« Antwort #3 am: 09.10.07 - 12:13:52 »
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
Gruß
Thomas

Offline RalfK

  • Frischling
  • *
  • Beiträge: 49
  • Geschlecht: Männlich
Re: Fehler bei PicklistCollection
« Antwort #4 am: 09.10.07 - 12:27:07 »
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

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Fehler bei PicklistCollection
« Antwort #5 am: 09.10.07 - 12:36:18 »
Zum Beispiel so:

Dim db As NotesDatabase
Set db = New NotesDatabase( "NameDesServers", "NameDerDatenbank" )

oder etwas kürzer so:

Dim db As New NotesDatabase ( "NameDesServers", "NameDerDatenbank" )


Axel
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline RalfK

  • Frischling
  • *
  • Beiträge: 49
  • Geschlecht: Männlich
Re: Fehler bei PicklistCollection
« Antwort #6 am: 09.10.07 - 21:49:56 »
Hallo,

ein kleines Problem habe ich noch. Wenn ich nun ESC drücke oder Abbrechen, dann bekomme ich die Fehlermeldung "Object Variable not set". Das passiert wahrscheinlich, weil beim Aufruf von "Item1" ja kein Wert zurück geliefert wird.

Mit einer IF Schleife kann ich diese Fehlermeldung nicht abfangen. Welche Möglichkeit hätte ich sonst?

Grüße
Ralf

Offline pete_bla

  • Senior Mitglied
  • ****
  • Beiträge: 455
  • Geschlecht: Männlich
  • dot net gitz net!
Re: Fehler bei PicklistCollection
« Antwort #7 am: 09.10.07 - 23:11:37 »
Hi , wenn das noch dein code ist:
   Set col = ws.PickListCollection(1, False, db.Server, db.FilePath , "export",
        "Auswahl erstellen", "Bitte auswählen:")
   
   Set doc = col.GetFirstDocument
dann bau vor dem
set doc=col.getfistdocument
Code
if col.count = 0 then 
    messagebox "nix gewählt"
    exit sub ' oder function oder wasauchimmerdudahast
end if
ein.

Gruss, Pete(r)
pete(r)

Offline RalfK

  • Frischling
  • *
  • Beiträge: 49
  • Geschlecht: Männlich
Re: Fehler bei PicklistCollection
« Antwort #8 am: 10.10.07 - 09:38:08 »
Ah super. Klappt ausgezeichnet. Dankeschön an alle. So, dann hier mal das komplette Script mit kleiner Beschreibung, falls jemand auch auf diese Problematik stösst.

Problemstellung:
In einem Dokument sollen Felder gefüllt werden. Die Werte werden aus einer Ansicht entnommen.

Voraussetzung in diesem Fall:
Es existiert ein Dokument (Maske1)mit den Feldern "Name" und "Strasse". Es existiert eine Schaltfläche (Dokument aus Maske2), in der das Script aufgerufen wird. Es existiert eine Ansicht "export" in der 2 Spalten sind, deren Feldwerte ebenfalls "Name" und "Strasse" heissen. (bezogen auf Maske1). Wir befinden uns jetzt in einem Dokument (Maske2)


Lösungsansatz:


   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

   ' Zuweisung der Felder im aktuellen Dokument zu den Items

   Set item1 = currdoc.GetFirstItem("Name")
   Set item2 = currdoc.GetFirstItem("Strasse")
   
   ' Aufruf der Dialogliste (PICKLIST_Custom, 1 Dokument maximal, gleicher Server, gleiche Datenbank, Ansicht "export")

   Set col = ws.PickListCollection(1, False, db.Server, db.FilePath , "export",_
        "Auswahl erstellen", "Bitte auswählen:")
   
   ' Schleife zum abfangen einer Fehlermeldung, wenn der Benutzer nichts wählt/ ESC drückt

   if col.count = 0 then
    messagebox "Keine Auswahl getroffen"
    exit sub
   end if

   
   ' Zuweisung der Werte aus der Dialogliste zu den Items im aktuellen Dokument
   Set doc = col.GetFirstDocument
   Call item1.AppendToTextList(doc.Name(0))
   Call item2.AppendToTextList(doc.Strasse(0))


Grüße
Ralf
« Letzte Änderung: 10.10.07 - 09:41:51 von RalfK »

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz