Das Notes Forum

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.

Gruß
Hitcher