Domino 9 und frühere Versionen > ND6: Entwicklung
Lotus Script und Listbox in Form
PascalB:
Hallo zusammen,
wir haben einen Agent im Einsatz, welcher die Daten einer Email inklusive der Anhänge
in ein bestimmtes Verzeichnis auf die Festplatte schreibt und noch paar Sachen macht.
Kurze Beschreibung SOll:
Nun wollen wir den Usern die Möglichkeit geben, in einem Zwischenschritt selbst zu bestimmen
welche der Anhänge der Email exportiert werden sollen.
Ich hatte da an ein Form "SaveAttachments" gedacht, welches in einer Listbox alle
in der Email vorkommenden Anhänge auflistet und der Benutzer markiert die zu exportierenden
Anhänge. Im Agent müsste ich dann auslesen können, welche Anhänge markiert worden sind und
diese Info entsprechend weiter verarbeiten.
Kurze Beschreibung Ist:
Allgemein haben wir schon die Zwischenlösung, das pro Anhang eine MsgBox aufgeht, über welche
der Benutzer mit Ja oder Nein bestimmen kann, ob dieser Anhang exportiert werden soll. Das ist
natürlich nicht so schön wie die oben gewünschte Vorgehensweise.
Fragen:
Ist das generell möglich?
Wie greif ich vom Agent auf die Listbox im Form zu, um dieses auszulesen, bzw. wie übergebe
ich die Listbox oder zumindest die selektierten Anhänge zurück an den Agent?
Beispielcode:
Ein Form "SaveAttachments" mit einem Field als Listbox (multiple values) und einem Button Absenden existiert.
--- Code: ---Function AttsDetach2 (doc As NotesDocument, path As String)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim newDoc2 As NotesDocument
Dim errMsg$
'** create a new document
Dim dbName$, dbServer$
If CONVERT_DB_NAME2="THIS" Then
dbName = doc.ParentDatabase.FilePath
dbServer = doc.ParentDatabase.server
Else
dbName = CONVERT_DB_NAME2
dbServer = CONVERT_DB_SERVER2
End If
Set db = session.GetDatabase(dbServer, dbName)
If Not db.IsOpen Then
errMsg = dbServer + "!!" + dbName + ": Datenbank kann nicht geöffnet werden"
Goto NormalExit
End If
Set newDoc2 = New NotesDocument(db)
newDoc2.Form = "SaveAttachments" <- Die Zeile wird noch ausgeführt.
newDoc2.open
If IsTest Then Print "Neue Func AttsDetach2 ends" <- Die Zeile wird nicht mehr ausgeführt.
NormalExit:
If errMsg <> "" Then Msgbox errMsg, 16, db.Title+" Fehler"
Exit Function
End Function
--- Ende Code ---
Bereits jetzt vielen Dank für eure Zeit und Antworten
Pascal
dirk_2909:
--- Zitat ---Ist das generell möglich?
Wie greif ich vom Agent auf die Listbox im Form zu, um dieses auszulesen, bzw. wie übergebe
ich die Listbox oder zumindest die selektierten Anhänge zurück an den Agent?
--- Ende Zitat ---
Hallo
Willkommen im Forum.
generell ist es möglich ;-) Du musst über workspace.Dialogbox dein "Listbox" in der Maske ansprechen.
Vorher musst du ein tempräres backend-Document erstellen, dass du der Dialogbox übergibst und in das
du die Werte (Attachmentnames) reinschreibst. Wenn der Benutzer was gewählt hat (in der Dialogbox) musst du das tem. Backend-DOc auswerten.
Beispiele dafür gibt es hier im Forum und in der DesignerHelp.
PascalB:
Hallo und vielen Dank für die freundliche Begrüßung :)
Hab jetzt mal folgende Function Test eingebunden:
--- Code: ---Function test
Dim workspace As New NotesUIWorkspace
Dim notesUIView
Dim UB, C1
Call workspace.DialogBox _
( "SaveAttachments", True, True, True, True, _
False, False, "Anhänge speichern" )
Set notesUIView = workspace.CurrentView
Dim aUpdList As Variant
If NotesUIView.Body.listbox1.Count > 0 Then
Msgbox "Count > 0"
UB = NotesUIView.Body.listbox1.Count - 1
Redim aUpdList(UB)
For C1 = 0 To UB
NotesUIView.Body.listbox1.CurrentSelection = C1
aUpdList(C1) = NotesUIView.Body.listbox1.Text
Next
End If
End Function
--- Ende Code ---
Vielen Dank für deinen Beitrag und deinen Wegweiser.
Damit sollte ich weiter kommen.
Pascal
PascalB:
Hallo zusammen,
habe jetzt etwas rumprobiert und meine auf der richtigen
Fährte zu sein.
Ich erstelle im Backend ein neues NotesDocument.
Diesem weise ich per New NotesItem Werte zu.
Anschließend öffne ich im Frontend mein Form.
Aber das Item im Frontend ist trotzdem leer :(
Hier mal der Code dazu:
--- Code: --- <snip aus Initialize>
CONVERT_DB_SERVER = ""
CONVERT_DB_NAME = "THIS"
CONVERT_FORM2 = "SaveAttachments"
CONVERT_FIELD2 = "listbox1"
</snip>
Dim db As NotesDatabase
Dim newDoc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim textListItem As NotesItem
Dim newValues( 0 To 2 ) As String
'...set value of newDoc...
newValues( 0 ) = "Bicycle"
newValues( 1 ) = "Train"
newValues( 2 ) = "Foot"
Dim dbName$, dbServer$
If CONVERT_DB_NAME="THIS" Then
dbName = doc.ParentDatabase.FilePath
dbServer = doc.ParentDatabase.server
Else
dbName = CONVERT_DB_NAME
dbServer = CONVERT_DB_SERVER
End If
Set db = session.GetDatabase(dbServer, dbName)
If Not db.IsOpen Then
errMsg = dbServer + "!!" + dbName + ": Datenbank kann nicht geöffnet werden"
Goto NormalExit
End If
Set newDoc = New NotesDocument(db)
newDoc.Form = CONVERT_FORM2
FieldName = CONVERT_FIELD2
Set textListItem = New NotesItem (newDoc, FieldName, newValues )
Set textListItem = newDoc.ReplaceItemValue("Authors", Evaluate({@UserName}, newDoc))
textListItem.IsAuthors = True
Set textListItem = newDoc.ReplaceItemValue("$PublicAccess", "1")
Call newDoc.Save( True, True )
Call workspace.DialogBox _
("SaveAttachments", True, True, True, True, _
False, False, "Anhänge speichern" ,newDoc)
--- Ende Code ---
Das Form "SaveAttachments" geht zwar auf, aber die Listbox ist leer.
Irgendwie find ich den Fehler nicht. Mit dem Debugger komm ich auch nicht dahinter...
Wobei es mich wundert, dass im Debugger->Variables->NEWDOC vier Items auftauchen:
FORM, listbox1, Authors und $PublicAccess.
Müsste nicht unter FORM die listbox1 gelistet sein??
Über Tipps und Hinweise freue ich mich.
Pascal
DAU-in:
Ich bin gerade verwirrt.
Du setzt dreimal dein TextlistItem, aber als verschiedene Items?
Was ist denn da listbox1? das CONVERT_FIELD2?
ich sehe da gerade 4 Items: Form, CONVERT_FIELD2, Authors und $PublicAccess
und es ist korrekt, dass alle 4 unter deinem newDoc erscheinen, Form steht hier für ein Item, in dem der Maskenname abgespeichert ist.
Grüsse
Dau-in
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln