Domino 9 und frühere Versionen > ND6: Entwicklung
Query Paste Event in einer View
animate:
ich sehe da einen kleinen Denkfehler.
Das Dokument, auf dem der Balken steht, ist ja nicht zwingenderweise das Dokument, das per 'Paste' eingefügt wird.
Insofern nützt ein Test an dieser Stelle (QueryPaste-Event) recht wenig. So seh ich das auf jeden Fall.
Ein Workaround (recht simpel und pragmatisch):
du nutzt das PostPaste-Event und checkst da die Dokumente.
Wenn ein schlechtes dabei ist, dann setzt du ein Flag in dem Dokument (geht natürlich nur, wenn die User Editorrechte haben)
Und dann baust du dir nen Agent, der die bösen Dokumente regelmäßig Teile löscht.
Und du passt die Ansichten entsprechend an, dass sie die bösen Dokumente nicht anzeigen.
animate:
hast dus schonmal mit dem DocumentContext der NotesSession probiert, an das Dokument zu kommen? Kanns leider selber nicht ausprobieren...
Dim session As NotesSession
Dim docCurrent As NotesDocument
Dim session = New NotesSession
Set docCurrent = session.DocumentContext
TMC:
Alternativ könntest Du das Script in einen Agenten auslagern.
Trigger: When documents are pasted
Der Agent wird gestartet, sobald ein Dokument in die Datenbank eingefügt wird.
Berechtigung: Dieser Agent ist ist client-basierend, d.h. der läuft mit der Berechtigung die der User hat, der ein Dokument einfügt.
Ich sitze gerade bei meinem Agent-Dokumention für BP, daher kam mir das jetzt in den Sinn.....
Gearbeitet habe ich mit diesem Trigger selber allerdings noch nie.
LisaS:
Danke für die zahlreichen Antworten.
Ich hab das erstmal so gelöst, daß im Query-Paste dieser Agent läuft.
Es werden nur Dokumente eingefügt die markiert waren.
Sub Querypaste(Source As Notesuiview, Continue As Variant)
Dim session As New NotesSession
Dim db As NotesDatabase
Dim dc As NotesDocumentCollection
Dim doc As NotesDocument
Dim run_state As String
Dim flag As Integer
Set db = session.CurrentDatabase
Set dc = source.Documents 'alle einzufügenen Dokumente
'Dokumente müssen markiert sein
If dc.Count = 0 Then
continue = False
End If
Set doc = dc.GetFirstDocument()
While Not(doc Is Nothing)
If doc.HasItem("run_state") = True And _
(doc.form(0) = "Timesheet" Or _
doc.form(0) = "TimesheetSummery") Then
run_state=doc.run_state(0)
flag = run_state
If flag < 5 Then
Set doc =dc.GetNextDocument(doc)
Else
continue = False
Messagebox "Sie haben ein freigegebenes Dokument aus gewählt!", MB_OK, "Achtung"
End
End If
Else
Set doc =dc.GetNextDocument(doc)
End If
Wend
End Sub
@Thomas:
DocumentContext funktioniert nicht.
Gruß
Hitcher
@TMC:
Trigger-Agent geht nicht da di User keine Löschrechte haben.
Gruß
Hitcher
Navigation
[0] Themen-Index
[*] Vorherige Sete
Zur normalen Ansicht wechseln