Das Notes Forum
Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: chock am 22.07.15 - 13:42:46
-
Hallo Forum,
wir haben die ganze Zeit ein neues Dokument über die Formel @Command([Compose]; "Maske") erstellt. In dieser Maske werden bestimmte Postopen Events ausgeführt. Funktioniert auch alles ohne Probleme.
Nun soll zusätzlich ein Word-Dokument wärend des erstellens eines neuen Dokumentes in Maske eingebunden werden.
Eine entsprechende Formel habe ich in den Button eingefügt, die auch die gewünschte Funktion erfüllt.
Das Problem ist nun, das neu erstellte Dokument führt die PostopenEvents nicht mehr aus. Woran könnte das liegen?
Danke.
Formel Butten für neues Dokument.
Sub Click(Source As Button)
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set doc = New NotesDocument(db)
doc.Form = "Maske"
Set uidoc = ws.CurrentDocument
Set rtitem = New NotesRichTextItem( doc, "RT_Feld" )
Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", "c:\test.dotx")
Set uidoc = ws.EditDocument(True, doc) \\K
Call uidoc.GotoField( "Description" )
'Call uidoc.Refresh
End Sub
-
Hast du mal geguckt, was der Debugger dazu sagt?
Chris
-
Hast du mal geguckt, was der Debugger dazu sagt?
Chris
Hallo,
der Debugger sagt nichts, man sieht nur das Script von dem Button. Dannach ist sofort die Maske da.
-
Sub Click(Source As Button)
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set doc = New NotesDocument(db)
doc.Form = "Maske"
Set uidoc = ws.CurrentDocument
Set rtitem = New NotesRichTextItem( doc, "RT_Feld" )
Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", "c:\test.dotx")
Set uidoc = ws.EditDocument(True, doc) \\K
Call uidoc.GotoField( "Description" )
'Call uidoc.Refresh
End Sub
Wie sehen die PostOpen-Scripte aus, werden dort die Aktionen nur durchgeführt, wenn das Dokument neu ist?
Ein Compose erstellt ein neues Dokument, ein ws.EditDocument öffnet ein bereits bestehendes, das für Notes nicht mehr als neues Dokument erkannt wird (auch, wenn es einen Bruchteil einer Sekunde vorher erzeugt wurde)
-
Sub Click(Source As Button)
Dim s As New NotesSession
Dim ws As New NotesUIWorkspace
Dim db As NotesDatabase
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Set db = s.CurrentDatabase
Set doc = New NotesDocument(db)
doc.Form = "Maske"
Set uidoc = ws.CurrentDocument
Set rtitem = New NotesRichTextItem( doc, "RT_Feld" )
Set object = rtitem.EmbedObject( EMBED_ATTACHMENT, "", "c:\test.dotx")
Set uidoc = ws.EditDocument(True, doc) \\K
Call uidoc.GotoField( "Description" )
'Call uidoc.Refresh
End Sub
Wie sehen die PostOpen-Scripte aus, werden dort die Aktionen nur durchgeführt, wenn das Dokument neu ist?
Ein Compose erstellt ein neues Dokument, ein ws.EditDocument öffnet ein bereits bestehendes, das für Notes nicht mehr als neues Dokument erkannt wird (auch, wenn es einen Bruchteil einer Sekunde vorher erzeugt wurde)
Hallo,
ja, es sind viele Aktionen die nur bei einem neuen Dokument ausgeführt werden.
Dann ist genau dort das Problem, gibt es eine alternative zu ws.EditDocument?
Gruß
-
Eine saubere Alternative gibt es m.E. nicht. Du könntest mit Compose das Dokument erstellen, musst dann aber den Dateianhang in das geöffnete Dokument anhängen, was immer hampelig ist. Besser ist da auf jeden Fall die von Dir gewählte Methode.
Ich würde ein Feld in die Maske aufnehmen, das z.B. "IstNeuesDokument" heißt, berechnet beim Anlegen, Wert "1". Im QuerySave setzt Du den Wert auf "" oder "0".
Im PostOpen fragst Du dann nicht die Original-Notes-Eigenschaft ab, sondern stattdessen das neue Feld.
If doc.IstNeuesDokument (0) = "1" Then
Wenn Du das so umsetzt, darfst Du nicht vergessen, in sämtliche bestehende Dokumente den Wert für ein altes Dokument zu setzen (also "" oder "0").
-
Eine saubere Alternative gibt es m.E. nicht. Du könntest mit Compose das Dokument erstellen, musst dann aber den Dateianhang in das geöffnete Dokument anhängen, was immer hampelig ist. Besser ist da auf jeden Fall die von Dir gewählte Methode.
Ich würde ein Feld in die Maske aufnehmen, das z.B. "IstNeuesDokument" heißt, berechnet beim Anlegen, Wert "1". Im QuerySave setzt Du den Wert auf "" oder "0".
Im PostOpen fragst Du dann nicht die Original-Notes-Eigenschaft ab, sondern stattdessen das neue Feld.
If doc.IstNeuesDokument (0) = "1" Then
Wenn Du das so umsetzt, darfst Du nicht vergessen, in sämtliche bestehende Dokumente den Wert für ein altes Dokument zu setzen (also "" oder "0").
Hallo,
danke für den Tipp, ich habe die Maske entsprechend umgebaut und die vorhandenen Dokumente angepasst.
Gruß
Chris