Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: my head am 06.10.03 - 09:01:53
-
ich erzeuge per formelsprache von einer maske aus ein neue maske in einem frame... im queryopen der neuen maske sollen bereits felder belegt werden... wenn ich per ws.CurrentDocument zugreife ist aber noch die alte maske, das currentdocument... wie kann auf die sich öffnende maske zugreifen?
danke schonmal,
stefan
-
Neue Maske? Mit einem neuen oder einem bestehenden Dokument? Wenn es sich um ein neues Dokument handelt, existiert das Dokument erst im Postopen, dies, weil man ja im QueryOpen den ganzen Prozess noch verwerfen kann, hingegen beim PostOpen ist per Definition das neue Dokument erzeugt.
-
ich möchte per buttonclick inhalte der alten maske in felder der neuen, bisher leeren maske übertragen...
-
Also, noch einmal, eine MASKE ist in dieser Situatin immer bestehend, die hast Du ja irgendwann einmal früher im Designer erstellt.
Die entscheidende Frage hier ist: machst Du dabei ein NEUES DOKUMENT? (zB mit @command([Compose].....). Wenn ja, dann geht das erst im Postopen und noch nicht im QueryOpen. Begründung siehe oben.
-
hab ich schon verstanden, aber nicht geschrieben... sorry
(erstell ein neues doc mit compose)
wenn jetzt aber mit code im postopen auf das neu geöffnete dokument zugreifen will, ist mein quelldoc das currentdocument...
kann allerdings mit formelsprache werte einfügen...
wollte jetzt wissen, on ne möglichkeit gibt, dass ich auf das neu geöffnete dokument zugreife... sowas wie currentdocument, nur für das document aus dem der code ausgeführt wird... finde näml nix!
-
Hi,
sollen die Felder nur in bestimmten Situationen automatisch übernommen werden ?
Ansonsten kann man das auch einfacher machen, indem man der Maske angibt, daß Werte aus dem gewählten Dokument übernommen werden sollen. Das gilt natürlich dann immer.
Wenn das nicht zutrifft, bitte Post ignorieren ;)
-
Nö, da es nur ein einziges CurrentUIDocument geben kann (dasjenige, das den Focus hat), kann man vom System her nicht auf das vorhergehende zugreifen. Gibt prinzipiell 2 Möglichkeiten: Du hinterlegst in der Notes.ini oder in einem Profil-Dokument die DocumentUNID des ursprünglichen Dokumentes und öffnest es dann im Postopen des neuen Docs, oder Du erstellst das neue Dokument in Deinem Button, schreibst Deine Daten in das neue Dokument rein und öffnest es dann mit NotesUIWorkspace.EditDocument
-
doch, das sollte schon so funktionieren...
weiß aber leider nicht wie du meinst...
-
Werte automatisch übernhemen:
Maske als Response oder Response to Response definieren, "Formulas inherit values from selected document" aktivieren (Propeller-Tab der Form-Eigenschaften) und dann in den Feldern, die die Werte übernehmen sollen, Default-Formeln eintragen.
-
Für den gewünschten Zweck muß die Maske nicht als Antwort-(Response-)Dokument deklariert werden - das ist ggf. sogar unerwünscht.
Bernhard
-
Hm, das macht eigentlich Sinn, da hätte vor ein paar Jahren der Instruktor uns was falsches erzählt, da ich diese Funktion allerdings nur sehr selten brauche, ist mir das nicht aufgefallen. Danke für den Hinweis
-
oder Du erstellst das neue Dokument in Deinem Button, schreibst Deine Daten in das neue Dokument rein und öffnest es dann mit NotesUIWorkspace.EditDocument
Ich glaube das ist der Beste weg, der vielleicht nicht richtig verstanden wurde.
'also in LS ein neues document anlegen
Dim session As New NotesSession
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Set db = session.CurrentDatabase
Set doc = New NotesDocument( db )
'deine form eintragen
doc.Form = "FormName"
'Felder die übernommen werden sollen
doc.Feldname = "Dein Text"
doc.ComputeWithForm( False, False )
Call doc.Save( True, True )
'document zum bearbeiten öffnen
Set uidoc = workspace.EditDocument( True,doc )
Call uidoc.GotoField( "erste Feld" )
Gruß Micha
-
Ja, genau das hab ich gemeint, ist wohl einer der flexibelsten und sicheren Wege ans Ziel.