Das Notes Forum

Domino 9 und frühere Versionen => ND8: Entwicklung => Thema gestartet von: yannick am 06.12.12 - 13:58:46

Titel: Neues document im Front-End
Beitrag von: yannick am 06.12.12 - 13:58:46
Hallo Leute,
ich brauche ein neues document im Front-End. Dabei verwende ich die ComposeDocument-Funktion wie folgt:
Code
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set uidoc = ws.ComposeDocument( , , "myForm", , , True)
Call uidoc.FieldSetText("field", "text")

Allerdings werden die Felder bei uidoc.FieldSetText nicht gesetzt. Im Debugger sieht man auf jeden Fall das richtige document unter uidoc, uidoc.FieldGetText funktioniert auch normal. Vielleicht nur ein Denkfehler? Danke für eure Hilfe!
Titel: Re: Neues document im Front-End
Beitrag von: Tode am 06.12.12 - 14:18:24
Das ist wahrscheinlich ein Timing- Problem, oder das Feld ist nicht bearbeitbar...

Mach es doch so:
Code
set doc = New NotesDocument( db )
doc.field = "Text"
set uidoc = ws.EditDocument( True, doc )
Titel: Re: Neues document im Front-End
Beitrag von: ascabg am 06.12.12 - 14:18:46
Hallo,

Warum drehst Du die Geschichte nicht einfach um?

- Dokument, muss ja noch nicht einmal gespeichert sein, im Backend erstellen
  ( set doc = new notesdocument(db)
- Felder befuellen
  (doc.Feld = "" oder call doc.ReplaceItemValue("Feld", "Wert")
- jetzt mittels uiws.EditDocument zum Bearbeiten fuer den Benutzer im Frontend oeffnen


Andreas
Titel: Re: Neues document im Front-End
Beitrag von: yannick am 11.12.12 - 16:35:33
Wunderbar, vielen Dank für die vielen Antworten, konnte leider nicht früher antworten :)
Jetzt hat sich noch ein weiteres kleines Problem ergeben. In einer DialogBox habe ich mehrere (dynamische) Comboboxen. Solange der User auf die Liste klickt und einen Wert auswählt ist alles ok. Nur wenn der User den bereits erscheinenden Wert einfach übernimmt ohne auf die Combobox zu klicken bekomme ich am Ende die komplette Liste, und nicht nur den ausgewählten Wert raus. Wie kann ich das umgehen?
Titel: Re: Neues document im Front-End
Beitrag von: ascabg am 11.12.12 - 16:39:42
Hallo,

Wie werden die Boxen denn gefuellt?
Und hast Du dann auch einen "Vorgabewert" definiert?


Andreas
Titel: Re: Neues document im Front-End
Beitrag von: yannick am 11.12.12 - 16:44:12
Wie werden die Boxen denn gefuellt?
Mit einem array:
Code
Call dialdoc.ReplaceItemValue("comboField", myArray)
Zusätzlich in den Properties der Combobox unter "Choices -> Forumla" nochmal den eigenen Feldnamen ("comboField") angegeben (ansonsten hat es nicht funktioniert). Einen Vorgabewert habe ich soweit ich weiß nicht formuliert (wobei ich mir mit dem "Choices->Formula" nicht sicher bin).
Titel: Re: Neues document im Front-End
Beitrag von: ascabg am 11.12.12 - 16:47:14
Nochmal.

Habt ihr auch einen "Vorgabewert" definiert?


Andreas
Titel: Re: Neues document im Front-End
Beitrag von: Peter Klett am 11.12.12 - 17:04:42
Wie werden die Boxen denn gefuellt?
Mit einem array:
Code
Call dialdoc.ReplaceItemValue("comboField", myArray)
Zusätzlich in den Properties der Combobox unter "Choices -> Forumla" nochmal den eigenen Feldnamen ("comboField") angegeben (ansonsten hat es nicht funktioniert). Einen Vorgabewert habe ich soweit ich weiß nicht formuliert (wobei ich mir mit dem "Choices->Formula" nicht sicher bin).
Das kannst Du so nicht machen.

Du hast ein Feld namens comboField. Dieses Feld füllst Du mit einem Array und sagst dem Feld, dass es die Liste aus sich selbst holen soll. Damit sind Auswahlliste und Wert des Feldes identisch.

Richtig geht das so:

Schreib die Liste in ein anderes Feld (genauer: Item), z.B. comboFieldList, und trag im comboField ein, dass die Liste aus comboFieldList zu nehmen ist. Und wenn Du dann noch einen Vorgabewert in dem Feld benötigst, fülle es (also comboField) mit genau diesem einen Wert.
Titel: Re: Neues document im Front-End
Beitrag von: Peter Klett am 11.12.12 - 17:11:01
Nochmal.

Habt ihr auch einen "Vorgabewert" definiert?


Andreas
@Andreas: Da das Item durch das Script schon befüllt ist, ist der Vorgabewert hinfällig
Titel: Re: Neues document im Front-End
Beitrag von: ascabg am 11.12.12 - 17:16:12
@Peter
Bist Du Dir da absolut sicher?


Andreas
Titel: Re: Neues document im Front-End
Beitrag von: Peter Klett am 11.12.12 - 17:24:48
Ja!

Der Vorgabewert ist der Wert, den ein Feld (Item) bekommt, wenn es initial erstellt wird.

Mach den Test: Nimm eine Maske mit einem Vorgabewert in einem Feld. Erstelle ein Dokument per Script, trag die Form ein und einen Feldwert für das Item (kann auch leer sein ""), öffne das Dokument -> kein Vorgabewert (bzw. der, den Du per Script gesetzt hast).
Titel: Re: Neues document im Front-End
Beitrag von: yannick am 11.12.12 - 17:42:29
Richtig geht das so:

Schreib die Liste in ein anderes Feld (genauer: Item), z.B. comboFieldList, und trag im comboField ein, dass die Liste aus comboFieldList zu nehmen ist. Und wenn Du dann noch einen Vorgabewert in dem Feld benötigst, fülle es (also comboField) mit genau diesem einen Wert.
Super, danke dir! Klappt prima auf diese Weise, auch mit dem Vorgabewert :)