Autor Thema: Frage zum Querydocumentdelte  (Gelesen 2459 mal)

Offline jimmyone

  • Junior Mitglied
  • **
  • Beiträge: 96
Frage zum Querydocumentdelte
« 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

Offline dirk_2909

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.173
  • Geschlecht: Männlich
  • Expand your Notes Client with ECM functionality..
    • d.velop
Re: Frage zum Querydocumentdelte
« Antwort #1 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...
Dirk

[IBM CLP R5]
[IBM CAD 6/6.5]
[IBM CAD 7]
[IBM CAD 8]


"Nein!! … Es genügt nicht Mails in einen anderen Ordner oder Datenbank zu verschieben, um sie zu archivieren!"

   
Disclaimer:
Ich Antworte nach besten Wissen und Gewissen. Sollte sich jemand durch meine Antwort persönlich angegriffen fühlen, ist dies nicht meine Absicht!
Ich bin auch nur ein Mensch, der Fehler machen kann. ....

Offline jimmyone

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Frage zum Querydocumentdelte
« Antwort #2 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?
« Letzte Änderung: 16.06.10 - 17:33:42 von jimmyone »

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Frage zum Querydocumentdelte
« Antwort #3 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

Offline jimmyone

  • Junior Mitglied
  • **
  • Beiträge: 96
Re: Frage zum Querydocumentdelte
« Antwort #4 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?

Offline ascabg

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 3.697
  • Geschlecht: Männlich
Re: Frage zum Querydocumentdelte
« Antwort #5 am: 17.06.10 - 11:16:32 »
Hallo,

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


Andreas

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Re: Frage zum Querydocumentdelte
« Antwort #6 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.

Offline Axel

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re: Frage zum Querydocumentdelte
« Antwort #7 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
Ohne Computer wären wir noch lange nicht hinterm Mond!

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz