Ist es möglich, per Lotusscript eine Aktion aus der Aktionsleiste auszuführen?
Falls nicht, gibt es eine Scriptalternative zu @Command( [NavNext] ), bei der direkt im aktuellen Fenster das nächste Dokument geöffnet wird?
Vielen Dank
Ist es möglich, per Lotusscript eine Aktion aus der Aktionsleiste auszuführen?
Falls nicht, gibt es eine Scriptalternative zu @Command( [NavNext] ), bei der direkt im aktuellen Fenster das nächste Dokument geöffnet wird?
Vielen Dank
GetNextDocument-Methode in LotusScript, NotesView-Klasse
GetNextDocument-Methode in LotusScript, NotesViewNavigator-Klasse
Dann bekomm ich das Objekt von dem nächsten Dokument, aber es wird nicht angezeigt. Wie bekomm ich das denn in das Fenster, wo die Dokumente angezeigt werden, Z.b. ins Previewfenster?
...kannst Du Dein Vorhaben etwas genauer beschreiben....
"Falls nicht, gibt es eine Scriptalternative zu @Command( [NavNext] ), bei der direkt im aktuellen Fenster das nächste Dokument geöffnet wird?"
Es soll exakt das selbe ausgeführt werden wie bei @Command([NavNext]). Wenn man also das Script oder die Aktion ausführt, soll sich im selben Fenster wo man gerade ein Dokument betrachtet (ob im Previewfenster oder in einem extra Tab) das nächste Dokument aus der View geöffnet werden. Die Aktion bzw. das Script soll in der Maske als Button enthalten sein.
Leider kann ich @Command([NavNext]) nicht benutzen, da sich, wenn man sich beim letzten Dokument befindet und @Command([NavNext]) ausführt, die Datenbank ohne Meldung beendet. Der Befehl prüft also nicht, ob er sich beim letzten Dokument befindet. @Command([NavPrevMain]) tut dies, denn da kommt eine Meldung: "Keine Dokumente in dieser Richtung vorhanden".
Deshalb bin ich gerade dabei ein Script zu schreiben welches prüft, ob das derzeitig geöffnete Dokument das letzte in der Ansicht ist, aus der es aufgerufen wurde. Nach der Prüfung soll halt entweder eine Meldung ausgegeben werden, dass es kein nächstes Dokument gibt, oder eben @Command([NavNext]) soll ausgeführt werden. Über Evaluate ist es nicht möglich @Command Formeln aufzurufen, daher will ich entweder eine Aktion per Script aufrufen oder eben im Script selber den Befehl nachbilden.
....versuch es doch mal mit [NavigateNext] ....oder [NavNextMain]...
Das Phänomen (Datenbank wird geschlossen) tritt bei allen Navigate Befehlen auf (NavPrev, NavigatePrev, NavNext, NavigateNext, NavNextMain, NavigateNextMain) außer bei NavPrevMain und NavigatePrevMain. Wieso weiß ich nicht.
Benutzen tu ich 6.5.1
Mein Script sieht bis jetzt wie folgt aus:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim last_doc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim akt_dokument As NotesUIDocument
Dim akt_view As NotesUIView
Dim currentviewname As String
Set akt_dokument = workspace.CurrentDocument
key = akt_dokument.FieldGetText("projektname")
currentviewname = akt_dokument.FieldGetText("current_view")
Set db = session.CurrentDatabase
Set view = db.GetView ( currentviewname )
If view Is Nothing Then
Messagebox "Fehler"
Else
Set last_doc = view.GetLastDocument
If akt_dokument.Document.UniversalID = last_doc.UniversalID Then
Messagebox "Letztes Dokument"
Else
Messagebox "navigiere zum nächsten"
End If
End If
End Sub
Alles anzeigen
Aus dem aktuellen Dokument wird aus einem berechneten Feld (current_view) ausgelesen aus welcher Ansicht heraus es aufgerufen wurde. Dann wird das letzte Dokument aus der Ansicht geholt und die beiden UniversalIDs verglichen. Wo "navigiere zum nächsten" steht sollte nun jetzt der Aufruf der sub oder ähnliches erfolgen, in der das nächste Dokument angezeigt wird. (so wie bei NavNext)
...oder vielleicht so...
@IfError(@Command([NavNext]);@Prompt([Ok];"Achtung";"Letztes Dokument erreicht"))
Das Ding wirft scheinbar keinen Fehler. Genau das selbe: Er schließt einfach die Datenbank, ohne jede Meldung.
Hast du denn ebenfalls Notes 6.5.x?
Bei Notes 7 geht´s...was Dir allerdings nicht zwingend weiterhilft.
dann vielleicht doch auf die umständliche weise...
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim last_doc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim akt_dokument As NotesUIDocument
Dim akt_view As NotesUIView
Dim currentviewname As String
Set akt_dokument = workspace.CurrentDocument
key = akt_dokument.FieldGetText("projektname")
Dim vc As NotesViewEntryCollection
Dim et as NotesViewEntry
Dim curDoc as Notesdocument
Set curdoc = akt_dokument.document
currentviewname = akt_dokument.FieldGetText("current_view")
Set db = session.CurrentDatabase
Set view = db.GetView ( currentviewname )
Set vc = view.AllEntrys
set et = vc.GetEntry(curdoc)
If view Is Nothing Then
Messagebox "Fehler"
Else
Set last_doc = view.GetLastDocument
If akt_dokument.Document.UniversalID = last_doc.UniversalID Then
Messagebox "Letztes Dokument"
Else
set.curdoc = vc.GetNextDocument(et)
Call akt_dokument.Close
Call workspace.EditDocument(0, curdoc)
End If
End If
End Sub
Alles anzeigen
1:1 kopiert funktioniert dies bei mir nicht. Werde mich mal morgen daran machen es anzupassen. Habe bis jetzt noch nie mit Entry oder Entrycollections gearbeitet.
Vielen Dank bis dahin.
Wie folgt funktioniert es:
Sub Click(Source As Button)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim view As NotesView
Dim last_doc As NotesDocument
Dim workspace As New NotesUIWorkspace
Dim akt_dokument As NotesUIDocument
Dim akt_view As NotesUIView
Dim currentviewname As String
Dim vc As NotesViewEntryCollection
Dim et As NotesViewEntry
Set akt_dokument = workspace.CurrentDocument
key = akt_dokument.FieldGetText("projektname")
currentviewname = akt_dokument.FieldGetText("current_view")
Set db = session.CurrentDatabase
Set view = db.GetView ( currentviewname )
Set vc = view.AllEntries
Set et = vc.GetEntry(akt_dokument.document)
If view Is Nothing Then
Messagebox "Fehler"
Else
Set last_doc = view.GetLastDocument
If akt_dokument.Document.UniversalID = last_doc.UniversalID Then
Messagebox "Letztes Dokument"
Else
Set et = vc.GetNextEntry(et)
Call akt_dokument.Close
Call workspace.EditDocument(0, et.Document)
End If
End If
Alles anzeigen