Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: brathaenchen am 30.03.06 - 14:41:28

Titel: DokumentCollection an Picklist übergeben
Beitrag von: brathaenchen am 30.03.06 - 14:41:28
Hi!

ist es möglich eine DocumentCollection in Skript an eine Picklist zu übergeben?

Derzeit setze ich die Werte einiger Felder in einen String und übergebe diese an ein Array. Dieses übergebe ich der Picklist. Allerdings brauch ich zur späteren Weiterverarbeitung das gewähle Dokument im Zugriff.
Wenn ich die DocID des Dokuments zurückbekommen würde, wäre ja alles ganz einfach...

Danke im Vorraus


Der Skriptschnipsel ist nur Beispielhaft:


Redim user(0) As Variant     
Count = 0
while Not (userdoc is Nothing)
count = count +1
Redim Preserve user(count)
user(count) = "Wert"
set userdoc = dc.getnextdocument(userdoc)
wend

response = ws.Prompt (PROMPT_OKCANCELLIST, _
      "Empfänger", _
      "Bitte wählen Sie einen Empfänger aus", _
      user(0), user)



Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: klaussal am 30.03.06 - 14:47:28
Genauso wie den user die DocID mitspeichern.
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: brathaenchen am 30.03.06 - 14:48:47
also an den String anhängen? Sieht aber unschön aus...
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Wirsing am 30.03.06 - 14:51:53
Trenn es mit einem "|"  dann wird die DokID nicht angezeigt, aber als Ergebnis an die Variable zurückgegeben.

Grüsse

Holger
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Axel am 30.03.06 - 14:55:06
Trenn es mit einem "|"  dann wird die DokID nicht angezeigt, aber als Ergebnis an die Variable zurückgegeben.

Grüsse

Holger

Das funktioniert aber mit der Prompt - Box nicht. Da bleibt dann nur sich diese Prompt-Box als Maske nachzubauen und als Dialog aufzurufen.


Axel
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: brathaenchen am 30.03.06 - 14:56:54
das ist doch wiedermal sch....
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Thomas Schulte am 30.03.06 - 14:58:44
Was du meinst ist ob du eine DocID rauskriegst wenn du einem Prompt mehrere User mitgibst.
So wie du das aufziehen willst geht nur die Lösung von Klaus.

Du könntest aber zusätzlich eine UserList als List anlegen, die Werte der Benutzer eintragen und die docunid des Dokumentes aus dem der user ist mit halten. Dann kannst du über den User als Key und Rückgabewert wieder auf die UNid zugreifen, ohne die mit anzeigen zu müssen.

Damit brauchst du das dann auch nicht in Form einer Dialogbox nachbauen. Voraussetzung ist aber  du kriegst einen eindeutigen Schlüssel über den Benutzernamen hin.

Und .....
zwischen einer Picklist und einem Prompt gibt es ein paar kleine aber feine unterschiede  ;D
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: koehlerbv am 30.03.06 - 15:01:13
Man könnte auch zwei Arrays aufbauen: Eines mit den Namen, im anderen die zugehörigen DocIDs. Der Wege gäbe es noch mehr.
Wenn das Brathähnchen sagt, was es eigentlich vorhat ...

Bernhard
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Axel am 30.03.06 - 15:07:28
Ich würde das nicht unbedingt mit zwei Arrays machen, sondern mit einem benutzerdefinierten Datentyp.

Ganz grob so in etwa:

Type UserType
 Name As String
 ID As String
End Type

Redim arrUser(0) As Usertype

Dem Usernamen wird das eine fortlaufende Zahl vorangestellt und dann im Prompt angezeigt.

z.b: so

1. UserA
2. UserB

Mit der Zahl kann man dann auf den Index innerhalb des Array schließen und erhält so die passende ID.


Axel

Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Thomas Schulte am 30.03.06 - 15:10:05
Und weil das warscheinlich außer Axel und Bernhard und den anderen Cracks jetzt keiner verstanden hat hier ein Beispiel:
Code
Dim userlist list as string

Redim user(0) As Variant     
Count = 0
while Not (userdoc is Nothing)
count = count +1
Redim Preserve user(count)
user(count) = userdoc.keyvalue(0)
userlist(userdoc.keyvalue(0))=userdoc.UniversalID
set userdoc = dc.getnextdocument(userdoc)
wend

response = ws.Prompt (PROMPT_OKCANCELLIST, _
		"Empfänger", _
		"Bitte wählen Sie einen Empfänger aus", _
		user(0), user)

UNidValue = Userlist(Response)

Hope That helps

@Axel Die Lösung hat den Vorteil, das du nicht mit der Anzeige der Daten rummanipulieren musst. Der Nachteil ist natürlich wenn der Schlüssel mehrfach vorkommt, dann geht das so in die Hose, weil dann der letzte gefundene Wert zieht.
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: koehlerbv am 30.03.06 - 15:15:36
Logisch stimmt das aber noch nicht so ganz, Thomas  ;)

No ein Tipp: Redim user (dc.Count - 1) macht die Sache einfacher und performanter.

Bernhard
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Thomas Schulte am 30.03.06 - 15:19:20
Stimmt Bernhard aber es war ja auch nur ein Quick And Dirty so könnte es gehen Beispiel. Getestet ist das nicht. Und der Redim war nicht meine Idee.  >:D
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Axel am 30.03.06 - 15:49:10
@Axel Die Lösung hat den Vorteil, das du nicht mit der Anzeige der Daten rummanipulieren musst.

Da gebe ich dir auf jeden Fall recht.

An eine Liste hatte ich zuerst auch gedacht, dass aber dann wieder verworfen, weil es nicht sichergestellt ist, dass der Schlüssel eindeutig ist. Von wegen alles Müller, oder was!?

Axel
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: koehlerbv am 30.03.06 - 15:52:36
Daher ist Deine Lösung mit
1-Müller
2-Lehmann
3-Müller
ein einfach-eleganter Ausweg, Axel.

Bernhard
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Axel am 30.03.06 - 15:58:22
ein einfach-eleganter Ausweg, Axel.

Yoo, nicht besonders schön, aber wieder einer der (so einigen) Würgdrummrumms.   ;)


Axel
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: koehlerbv am 30.03.06 - 16:05:12
Warum eigentlich Würgdrumrum? Das sehe ich gar nicht mal so.
Man könnte ja auch die gefundenen Dokumente in einen pers. Folder werfen und dann PicklistCollection hernehmen. Oder man sagt: Es geht nur mit eindeutigen Bezeichnern. Denn was sagt mir eigentlich die Auswahl
Müller
Lehmann
Müller? Welchen Müller habe ich denn da ausgewählt? Und wenn der Müller egal ist, dann brauche ich auch die Eindeutigkeit nicht mehr berücksichtigen ...

Und wie oben schon mal geschrieben: Es gibt sicherlich noch weitere Wege, die nach Brathähnchens Rom führen.

Bernhard
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: Thomas Schulte am 30.03.06 - 16:13:13
@Bernhard, deswegen bin ich ja von einem Eindeutigen Schlüssel ausgegangen. Aber das Hähnchen scheinen wir verschreckt zu haben. Das stellt sich jetzt nämlich tot.
Titel: Re: DokumentCollection an Picklist übergeben
Beitrag von: koehlerbv am 30.03.06 - 16:17:38
Aber das Hähnchen scheinen wir verschreckt zu haben. Das stellt sich jetzt nämlich tot.

Donnerstags steht bei uns in Siegsdorf immer der Hendlmann am Bahnhof. Soll ich sicherheitshalber mal nachschauen?  ;D

Bernhard