HCL Notes / Domino / Diverses > Entwicklung

Wie per Lotusscript neue Einträge in einem Listenfeld erstellen?

<< < (2/3) > >>

eknori (retired):
Funktioniert einwandfrei


--- Code: ---Sub Click(Source As Button)

Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim item As NotesItem

Set uidoc = workspace.CurrentDocument
Set doc = uidoc.Document

Set item = doc.GetFirstItem("multi")
Call item.AppendToTextList ( "abc" )
Call doc.Save(True, False)

End Sub
--- Ende Code ---

Tode:
@Ulrich: Ich hatte es so verstanden, dass er die mögliche AUSWAHL erweitern will. Also: Das Feld selbst ist Single Value, hat aber die Optionen "Name1" : "Name2" : "Name3" zur Auswahl. Und jetzt möchte er die Option "Name4" hinzufügen.
Wenn es wirklich nur darum geht, weitere Werte hinzuzufügen, dann hast Du natürlich vollkommen recht.

schroederk:
Ehrlich gesagt, habe ich euch jetzt absolut nicht verstanden, wer wo einen Unterschied sieht  :-[

Vielleicht fange ich nochmal von vorne an:
Ich möchte eine Maske bauen, in der der Anwender eine Liste bisher erfasster Kategorien angezeigt bekommt. Dieser Liste soll der Anwender weitere Kategorien hinzufügen können.
Dafür habe ich ein einfaches Feld KategorienNamen, Typ Text, Bearbeitbar, verborgen, Vorgabewert: "Kategorie 1" : "Kategorie 2"
und ein Feld KategorienListe, Typ Listenfeld, Bearbeitbar (bei berechnet lässt sich nicht speichern: "keine Formel für berechnetes Feld"), Formel für Auswahl verwenden:
@If(KategorienNamen = ""; "Keine Kategorien gefunden"; @GetField("KategorienNamen"))
Über die Schaltfläche "Neu" wird über Dialogbox eine weitere Maske aufgerufen in der der Anwender eine Bezeichnung (und die Farben) angeben kann.
Diese neue angegebene Bezeichnung soll nun im Listenfeld auftauchen und natürlich auch auswählbar sein.


--- Code: --- Dim ndialog2 As Integer
Dim dialogdoc2 As NotesDocument
Dim ws2 As New NotesUIWorkspace
Dim db2 As NotesDatabase
Dim s2 As New NotesSession
Dim uidoc2 As NotesUIDocument
Dim currdoc As NotesDocument
Dim item As NotesItem

On Error Goto ErrHandler2

Set uidoc2 = ws2.CurrentDocument
Set currdoc = uidoc2.Document

Set db2 = s2.CurrentDatabase
Set dialogdoc2 = db2.CreateDocument
dialogdoc2.SaveOptions = "0"

ndialog2 = ws2.Dialogbox("CategoriesNew",True,True,False,False,False,False,"Neue Kategorie",dialogdoc2, True, True, True)
If Not ndialog2 Then
'Messagebox ("abgebrochen")
Else
Set item = currdoc.GetFirstItem ( "KategorienNamen" )
'Set item = currdoc.GetFirstItem ( "KategorienListe" )
Call item.AppendToTextList ( "XXX")

Call uidoc2.Refresh
Call currdoc.Save(True, False)

--- Ende Code ---

pantelis.botsas:
Hallo schroederk,

Du möchtest neue Werte erfassen, welche dann künftig zur Auswahl stehen.
Hierzu ist eine Ansicht zu erstellen, in welcher der betreffende Feldwert aus dem Dokument in einer Spalte angezeigt wird (die Spalte kann sortiert sein, muss es aber nicht). Im nächsten Schritt befüllst Du die Auswahlliste des Feldes in Deiner Dialogbox über diese Spalte aus der Ansicht. Ein Beispiel einer Formelauswahl habe ich im Bild mit aufgenommen.

Off Topic (passt nicht zu Deiner Anforderung): In einem ganz einfachen Fall kann auch ein Feld vom Typ Dialogliste genutzt werden mit der Eigenschaft, dass neue Werte eingegeben werden können. Doch um die Ansicht kommst Du auch hier nicht herum, wenn Du diese neuen Werte für eine künftige Auswahlliste nutzen möchtest.

Möchtest Du "Standardwerte" vorgeben, so nimmst Du diese Werte zusätzlich VOR der @DBColumn-Formel auf. Also:
@Sort(@Unique("Wert 1":"Wert 2":@DBColumn(...)))

Damit verhinderst Du, dass die Standardwerte doppelt vorkommen.

Ich hoffe, ich habe Deine Situation jetzt richtig nachvollziehen können ;)

schroederk:
Ich wollte die Daten eigentlich in einem Profildokument anstatt einer Ansicht speichern.
Dafür wollte ich bspw. die Namen in ein einfaches Textfeld speichern, mit einem Separatorzeichen getrennt (bspw. "Kategorie 1;Kategorie 2; Kategorie 3")
Im Queryopen der Maske würde ich dann dieses Feld aus dem Profildokument auslesen und wieder in die Hilfsvariable speichern.
Fast genauso habe ich das bereits schon einmal gemacht. Dort habe ich auch im Queryopen eine Ansicht ausgelesen und Namen mit Doppelpunkt getrennt in eine String-Variable geschrieben.
Das Listenfeld hat dann über das Formelfenster einfach den Inhalt der Hilfsvariable geholt ( @GetField("Listenhelfer") ).

--- Code: ---
s_zeilen = ""
Set jobdoc = jobview.GetFirstDocument
While Not(jobdoc Is Nothing)
s_name = jobdoc.GetItemValue("Name")(0)
s_zeilen = s_zeilen & ":" & s_name
Set jobdoc = jobview.GetNextDocument(jobdoc)
Wend
s_zeilen = Mid(s_zeilen,2)
zeilen = Split(s_zeilen,":")

Call doc.ReplaceItemValue("Listenhelfer", zeilen)

--- Ende Code ---

Wenn ich dasselbe jetzt über die Schaltfläche versuche

--- Code: ---elements = "aaa:bbb:ccc:ddd"
zeilen = Split(elements,":")
Call currdoc.ReplaceItemValue("KategorienNamen", zeilen)

--- Ende Code ---
dann wird wieder alles in einer Zeile angezeigt.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln