Hallo,
habe folgenden Eintrag im Forum gefunden: http://atnotes.de/index.php?topic=25978.msg165896
Da ich genau dasselbe Problem habe, möchte ich gerne das Script bzw. die Funktion zum Refreshen einbauen.
Dazu habe ich den Code zum Refreshen des Dokuments in de Script Bibliothek test eingefügt.
Sub aktualisieren
Set session = New NotesSession
Set db = session.CurrentDatabase
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim dbThis As NotesDatabase
Dim unid As String
ReOpen = 0
Set dbThis = docThis.ParentDatabase
Call docThis.Save(True , True)
unid = docThis.UniversalID
docThis.SaveOptions = "0" ' # ... Speicherabfrage vermeiden
Set uidoc = ws.CurrentDocument
Call uidoc.Close
Set docThis = dbThis.GetDocumentByUNID(unid)
Set uidoc = ws.EditDocument(True , docThis)
Set docThis = uidoc.Document
If docThis.HasItem("SaveOptions") Then
' # ... das Feld SaveOptions wieder entfernen...
docThis.RemoveItem("SaveOptions")
Call docThis.Save( True , True )
End If
ReOpen = 1
Print "Das Dokument wurde erneut geöffnet"
End Sub
In der Maske in welcher ich die Tabelle erzeugen möchte habe ich folgenden Code:
Sub Click(Source As Button)
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim doc As NotesDocument
Dim rtitem As Variant
Set uidoc = ws.CurrentDocument
Set doc = uidoc.Document
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
Call rtitem.AddNewLine( 1 )
Call rtitem.AppendText( "Spalte1" )
Call rtitem.AddTab( 2 )
Call rtitem.AppendText( "Spalte2" )
Call doc.Save( False, True )
Call aktualisieren
End If
End Sub
In den Options der Maske habe ich folgenden Eintrag eingefügt:
Wenn ich nun die Schaltfläche betätige erhalte ich die Fehlermeldung "Object Variable not Set" bei der Zeile Set dbThis = docThis.ParentDatabase der Sub aktualisieren
Danke für jede Hilfe
Wenn kopieren, dann aber komplett:
Deiner Funktion aktualisieren fehlt der Parameter
vgl:
REM Das aktuelle Dokument schließen und wieder öffnen......
Function ReOpen(docThis As NotesDocument) As Integer
....
Jay. docThis ist ja noch leer.
Im anderen Thread wird der Funktion ein Dokument übergeben:
Function ReOpen(docThis As NotesDocument) As Integer
Das heisst, in der Funktion ist ein bereits belegtes "docThis" vorhanden. Du hast nun, soweit ich das sehe, "docThis" nichteinmal deklariert.
Es ist allgemein guter Stil, alle Variablen zu deklarieren. Wenn du die Zeile "Option Declare" in das Event "Options" einfügst, MUSST du alle deklarieren und stolperst weniger leicht über solche Fehler. Das nur nebenbei.
Damit das Script funktioniert, musst du auch deiner Funktion das Dokument zum refreshen übergeben:
Sub aktualisieren (docThis as NotesDocument)
Nun musst du beim Aufruf folgendes verändern:
So wird das Doc an die Funktion weitergegeben. Versuch es so nochmal.
Grüsse
Moritz
Ok jetzt funktionierts das mit dem Aufruf der Sub. Einziges Problem ist nun, dass wenn ich das Dokument vorher nicht speichere es zur Fehlermeldung in der Zeile
If ( rtitem.Type = RICHTEXT ) Then
kommt. Die Fehlermeldung lautet "Object Variable not Set"
Habe versucht das Dokument mit
Call doc.Save(True, False )
abzuspeichern und danach zu überprüfen ob es sich um ein Richtextitem handelt. Leider ohne Erfolg
Richtextfelder existieren erst nach dem speichern des Dokumentes. Du musst daher, wenn das Dokument noch nicht gespeichert wurde mit
doc.CreateRichtTextItem(RTITEM_NAME)
ein neues Richtextfeld erstellen.
EDIT: Um die nächste Frage auch gleich zu beantworten, so kannst du prüfen, ob rtItem belegt ist:
If rtItem Is Nothing Then