Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: LisaS am 21.04.04 - 16:44:18
Titel: Query Paste Event in einer View
Beitrag von: LisaS am 21.04.04 - 16:44:18
Hallo, Ich habe ein Script welches im Query-Paste-Event in einer View ist. Dieses Script funktioniert aber nur wenn ich die Dokumente vor dem kopieren mit einem Häkchen markiert habe. Wenn ich nur den Curser auf einem Dokument habe und dann kopiere und ein füge bekomme ich keine dc -> Collection. Frage: Was kann ich da tun?
Dim session As New NotesSession Dim db As NotesDatabase Dim dc As NotesDocumentCollection Dim dctmp 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 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 'Set TempDoc = doc 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
Gruß Hitcher
Titel: Re:Query Paste Event in einer View
Beitrag von: TMC am 21.04.04 - 20:17:04
Set dc = source.Documents 'alle eingefügten Dokumente
Der Kommentar stimmt so nicht, denn es heißt ja Query und nicht Post.
Daher solltest Du den PostPaste - Event nehmen.
Titel: Re:Query Paste Event in einer View
Beitrag von: Glombi am 21.04.04 - 20:26:04
Gibt es im QueryPaste nicht bereits als Argument die Dokumente? Habe leider momentan keinen Designer...
Andreas
Titel: Re:Query Paste Event in einer View
Beitrag von: TMC am 21.04.04 - 20:29:18
Nö, leider ned:
Code
Sub Querypaste(Source As Notesuiview, Continue As Variant)
Sub Postpaste(Source As Notesuiview)
Titel: Re:Query Paste Event in einer View
Beitrag von: LisaS am 19.05.04 - 15:49:12
schieb nach oben ::)
ich hab immer noch keine Idee wie das klappen könnte. Postpaste könnte man benutzen und dann einfach das Dok löschen welches eingefügt wurde, aber der Haken ist das die User keine Lösch-Berechtigung haben und somit diese Lösung auch flach fällt. Vieleicht hat ja einer ne Idee. Gruß Hitcher
Titel: Re:Query Paste Event in einer View
Beitrag von: animate am 19.05.04 - 16:18:58
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.
Titel: Re:Query Paste Event in einer View
Beitrag von: animate am 20.05.04 - 21:06:10
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
Titel: Re:Query Paste Event in einer View
Beitrag von: TMC am 20.05.04 - 21:13:20
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.
Titel: Re:Query Paste Event in einer View
Beitrag von: LisaS am 24.05.04 - 09:20:37
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.