Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: seerow am 24.11.05 - 08:51:32

Titel: Listenfeld Werte auslesen und übergeben
Beitrag von: seerow am 24.11.05 - 08:51:32
Guten Morgen Notes Gemeinde,

folgendes Problem, ich habe in einer Maske ein Listenfeld (Allow multiple values). Jetzt möchte ich, wenn das Dokument gespeichert wird, die markierten Werte aus dem Feld auslesen, und in Komma - separierter Form in ein Textfeld des gleichen Dokumentes schreiben. Um die Werte aus den Feld auszulesen, habe ich eine "Forall" Schleife benutzt, die mir ein Array zurück liefert:

Code
Set item = doc.GetFirstItem( "fd_select_alternate" )
i=0
Forall v In item.Values
	Redim Preserve eintrag(i)
	eintrag(i) = v
	i = i+1
End Forall

Set item = doc.ReplaceItemValue("fd_lookup_alt_contact_email",????) (Hier ist das Problem)
Call doc.ComputeWithForm( False, True) 
Call doc.Save(False, False)


Problem: Wie bekomme ich die einzlenen Werte des Arrays nun in das Textfeld des Dokumentes?

Ich bin mir nicht sicher, ob der oben gezeigte Lösungsansatz stimmt, für Verbesserungen wäre ich Dankbar.
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: klaussal am 24.11.05 - 09:07:05
Dim Feldstr as string

i=0
Feldstr = ""

Forall v In item.Values
   Redim Preserve eintrag(i)
   ' eintrag(i) = v
   i = i+1
                Feldstr = Feldstr + eintrag(i) + ","
End Forall

doc.deinFeld = Feldstr
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: klaussal am 24.11.05 - 09:07:55
Dim Feldstr as string

i=0
Feldstr = ""

Forall v In item.Values
   Redim Preserve eintrag(i)
   ' eintrag(i) = v
   i = i+1
                Feldstr = Feldstr + eintrag(i) + ","
End Forall

doc.deinFeld = Feldstr

Könnte so gehen ....
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: seerow am 24.11.05 - 10:09:17
ja, danke

das ist natürlich auch eine Idee. Problem ist nur bei deiner Lösung, dass immer nach dem letzten Eintrag ein "," steht was natürlich da nicht  gebraucht wird. Das komma kann man aber auch noch "wech" kürzen.

Code
i=0
			Feldstr = ""
			
			Forall v In item.Values
				Redim Preserve eintrag(i)
				i = i+1
				Feldstr = Feldstr + v + ", "
			End Forall
			
			l = Len(feldstr)
			Feldstr =  Left(feldstr, l-2)
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: root am 24.11.05 - 11:27:42
gibt es auch eine moeglichkeit, alle werte auszulesen, auch die die nicht markiert sind?

vielen dank
thomas
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: seerow am 24.11.05 - 13:18:28
Hi Thomas,

wenn du alle Werte auslesen möchtest kannst du das ganz einfach über

Dim subj As Variant
subj = doc.GetItemValue( "Subject" )
Messagebox( subj( 0 ) )

erledigen.

In diesem Fall ist es ein Bsp. aus der Designer Hilfe. Aber du kannt auch selber mal in der Klasse "NotesDocument" schauen.
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: Thomas Schulte am 24.11.05 - 13:23:03
Ganz falscher Ansatz.
Berechnetes Feld anlegen und als Formel
@implode(Auswahlfeld;", ")
angeben. ist viel einfache braucht kein Script und funktioniert sowohl im Notes als auch im Web.
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: Tode am 24.11.05 - 16:57:53
@Thomas: ich gebe Dir vollkommen Recht. Wiedermal ein Fall für fehlende absolute Basics.

(mal ganz abgesehen davon, dass es implode auch in Script gibt, und man die komische Schleife in eine einzige Zeile packen kann: imploded = implode( doc.GetItemValue( "NameDesItems" ) , ",")

Gruß
Tode

P.S.: Die "nicht selektierten Werte" bekommt man weder über Script noch über Formelsprache. Hierzu muss man einen kleinen Umweg in Kauf nehmen:

Feld erstellen, Mehrfachwerte, Werte: "Wert1" : "Wert2" : "Wert3" (alle auswahlmöglichkeiten für das auswahlfeld).

und dann im eigentlichen Auswahlfeld umstellen auf Formel und den Namen des anderen Feldes angeben.

Dann kommt man über das "ursprungsfeld" an alle Werte, und über das eigentliche Feld an die selektierten.
Titel: Re: Listenfeld Werte auslesen und übergeben
Beitrag von: seerow am 24.11.05 - 17:21:24
Zitat
Wiedermal ein Fall für fehlende absolute Basics

ohhh, ich bitte vielmals um Entschulding, Großmeister der Notes Programierung!

(Mann sollte mal nicht vergessen, dass jeder einmal bei NULL anfängt!!!)