Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: jimmyone am 16.06.10 - 16:15:06

Titel: Frage zum Querydocumentdelte
Beitrag von: jimmyone am 16.06.10 - 16:15:06
Hallo zusammen,

ich muss gestehen, mit der Formelsprache gehts inzwischen ganz gut...
Aber ich möchte auch versuchen, in LotusScript reinzukommen...
Ist zwar eigentlich nicht mein Job, aber ich finde es hochspannend.

Ich versuche so eine Art Delte Sicherung aufzubauen...
Aber ich bekomme immer wieder die Meldung "Object variable not set"

Code
	Dim Session As New NotesSession
	Dim db As NotesDatabase
	Dim ui As New NotesUIWorkspace
	Dim uidoc As NotesUIDocument
	
	Set db=Session.CurrentDatabase
	Set uidoc=ui.CurrentDocument
	
	If uidoc.FieldGetText("n_sw_del_safe") = 1 Then
		Messagebox "Document is delteable"
	Else
		Messagebox "Document is not delteable"
	End If

Also man geht quasi hin und selektiert ein Document in einer View und drückt auf Entf.
Zum Test soll dann erst mal diese Messagebox erscheinen...

Ich bin in LS wirklich Anfänger...

Grüße,
Jimmy
Titel: Re: Frage zum Querydocumentdelte
Beitrag von: dirk_2909 am 16.06.10 - 16:28:23
Wo ist das Script untergebracht? Im entsprechenden Event des DB-Scripts?

Dann kannst Du nicht auf das UI-Dok zugreifen. Du musst das Backend-Dokument nehmen...
Titel: Re: Frage zum Querydocumentdelte
Beitrag von: jimmyone am 16.06.10 - 17:31:04
Richitg, im Database Script soll das passieren, im Event
querydocumentdelete.

Das ganze soll ja nur auf ein ausgewähltes Dokument stattfinden...
Ich hatte gedacht, man muss das Dokument also über seine UNID angeben.

Aber wie komme ich dann an das Dokument ran, wenn ich kein UI nutzen kann?

Also wie soll man spezifizieren, das es sich gerade um Document X handelt und nicht um das erste etc.

Also wie soll ich an die UNID kommen? Oder ist der Weg ganz falsch?
Titel: Re: Frage zum Querydocumentdelte
Beitrag von: Axel am 16.06.10 - 19:31:58
So kommst du an die Dokumente ran:

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
 
  Dim collection As NotesDocumentCollection

  Set collection = Source.Documents
  'In der Collection sind nun alle zum Löschen markierten Dokumente enthalten
...

End Sub


Axel
Titel: Re: Frage zum Querydocumentdelte
Beitrag von: jimmyone am 17.06.10 - 11:14:09
Vielen Dank, das hat funktioniert.
NotesDocumentCollection taucht zwar in der Help auf, aber Source.Documents konnte ich da nicht finden...

Klar, das ergibt einen Sinn aber wo kommt das Command her?
Titel: Re: Frage zum Querydocumentdelte
Beitrag von: ascabg am 17.06.10 - 11:16:32
Hallo,

Zitat
Klar, das ergibt einen Sinn aber wo kommt das Command her?
Welches Command?


Andreas
Titel: Re: Frage zum Querydocumentdelte
Beitrag von: Peter Klett am 17.06.10 - 11:22:20
Du darfst nicht nach Source suchen. Source ist doch nur ein Name einer Variablen (oder einer Instanz, oder wie immer das ganz genau heißt, möchte mich nicht mit OOP-Theoretikern streiten). Entscheidend ist

Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)

Wenn Du in der Klasse Notesuidatabase nachschaust, findest Du Documents, und das ist eine NotesDocumentCollection.
Titel: Re: Frage zum Querydocumentdelte
Beitrag von: Axel am 17.06.10 - 11:25:24
Documents ist ein Property der Klasse NotesUIDatabase

Auszug aus der Hilfe:
Zitat
Documents property
Read-only. All the documents that the current NotesUIDatabase event is working on.

Defined in
NotesUIDatabase

Data type
NotesDocumentCollection

Syntax
To get: Set notesDocumentCollection = notesUIDatabase.Documents

Usage
If the collection is empty, Documents.Count is 0.

Und es gibt auch Beispiele dazu (darunter auch eins für das Event QueryDocumentDelete):
Code
Examples: NotesUIDatabase class
This example tracks the number of document deletions that occur while a database is open.

(Declarations)
Dim deleteCount As IntegerSub Postopen(Source As Notesuidatabase)
  deleteCount = 0
End Sub

Sub Querydocumentdelete(Source As Notesuidatabase, _
Continue As Variant)
  If Continue Then
    deleteCount = deleteCount + Source.Documents.Count
  End If
End Sub

Sub Querydocumentundelete(Source As Notesuidatabase, _
Continue As Variant)
  If Continue Then
    deleteCount = deleteCount - Source.Documents.Count
  End If
End Sub

Sub Postdocumentdelete(Source As Notesuidatabase)
  Messagebox Source.Documents.Count _
  & " deleted or marked for deletion"
End Sub

Sub Queryclose(Source As Notesuidatabase, Continue As Variant)
  Messagebox deleteCount & " documents deleted",, _
  "Net deletions"
End Sub


Axel