Das Notes Forum

Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: MadMetzger am 13.03.03 - 12:01:49

Titel: Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 13.03.03 - 12:01:49
Hallo zusammen!

ich möchte in einer Datenbank steuern, dass bei einem bestimmten Status ein Dokument nur noch von bestimmten Leuten, mit einer bestimmten Rolle, gelöscht werden kann. Wie baue ich das ins QuerDocumentDelete ein? Hab keine Idee.
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: Axel am 13.03.03 - 12:19:53
Hi,

hier ist ein Beispiel:

Dim roles As Variant
   
roles = Evaluate("@IsNotMember('[Schreiben]'; @UserRoles)")
If roles(0) = 1 Then
   Messagebox "Sie sind nicht zum Löschen von Dokumenten aus der Datenbank berechtigt." , 48, "Adressen"
   Continue = False
End If  'If roles(0) = 1 Then


Axel
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 13.03.03 - 12:22:54
das sieht schon gut aus! wie komme ich hier noch an einen feldwert, der noch relevant ist?
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: Axel am 13.03.03 - 12:52:34
Hi,

über den Parameter Source von Querydocumentdelete.

Dim collection As NotesDocumentCollection
Set collection = Source.Documents

Damit hast du eine Collection mit allen markierten Dokumenten. Dann kannst du mit den üblichen Funktionen auf die Felder zugreifen.

Axel
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 24.03.03 - 08:12:09
Wenn ich den Wert eines Feldes auswerten will, zum Beispiel ein Statusfeld wie klappt das?
Bsp.: wenn status = 1 dann löschen möglich
         wenn status = 2 dann löschen nicht möglich
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: Axel am 24.03.03 - 08:21:10
Hi,

in den Maskenevents geht das unter anderem so:

If Source.Document.Status(0) = 1 Then
  'Tu das eine
Else
  'Tu was anderes
End If

oder so

Select Case Source.Document.Status(0)
Case 1
  'Mach was
Case 2
  'Lass das
Case Else
  'Wenn nix passt
End Select

Axel

Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 24.03.03 - 08:38:40
wie verhält sich das mit collections? oder muss ich dann immer jedes doc einzeln aus der coll heranziehen?
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: Axel am 24.03.03 - 08:48:18
Hi,

im Prinzip ja.

Es sei denn du bildest die collection aus einem Suchergebnis, beispielsweise alle Dokumente in denen das Statusfeld 1 ist.

Axel
 
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 24.03.03 - 08:55:31
was heißt im prinzip? hab es mit dem feldnamen direkt versucht, hat nicht funktioniert. wie geht das genau?
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: Axel am 24.03.03 - 09:55:08
Hi,

der Zugriff fuinktioniert so:

...
Dim collection As NotesDocumentCollection
Dim doc As NotesDocument

'Füllen der collection

Set doc = collection.GetFirstDocument
While Not (doc Is Nothing)
  If doc.Status = 1 Then
    'Tu was
  Else
    'Tu was anderes
  End If
  Set doc = collection.GetNextDocument(doc)
Wend

...


Axel
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 24.03.03 - 10:19:25
alles klar! habs verstanden! danke nochmal!
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 24.03.03 - 13:51:41
Wenn ich dieses Script im querydocument delete einbinde kommt immer "Type Mismatch" beim Versuch zu löschen. Wo liegt der Fehler?
     Dim col As notesdocumentcollection
     Dim doc As notesdocument
     Dim session As New notessession
     Dim rolle As String
     
     Set col = source.documents
     Set doc = col.getfirstdocument
     Const macro = "@UserRoles"
     continue = False
     rolle = Evaluate (macro)
     
     While Not (doc Is Nothing)
          If doc.ANTStatusTX (0) = "15" Then
               continue = True
          End If
          If doc.ANTStatusTX (0) = "25" Then
               continue = True
          End If
          If rolle = "[Personal]" Then
               continue = True
          End If
          Set doc = col.getnextdocument(doc)
     Wend
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: Axel am 24.03.03 - 14:57:48
Hi,

Evaluate liefert einen Variant-Wert zurück.

Dim rolle As Variant
...
If rolle(0) = ....


So müsste es funktionieren.

Axel
Titel: Re:Löschung von Dokumenten verhindern / steuern
Beitrag von: MadMetzger am 25.03.03 - 09:15:55
so hat es funktioniert!