Autor Thema: Datenbank-Script: Querydocumentdelete - Konstellationen Ereignisausführung?  (Gelesen 4905 mal)

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Hallo,

in einer Datenbank dürfen in bestimmten Ansichten Dokumente normal über "Entf" gelöscht werden. Hierfür verwende ich o.g. Ereignis.

Ich frage den Aliasnamen der uiView ab um zu entscheiden, ob gelöscht werden darf oder nicht:
 
Zitat
Dim work As New NotesUIWorkspace
Dim uiview As NotesUIView
Set uiview = work.CurrentView

if uiview.View.Aliases(0) = "Name" then

In welcher Konstellation kann es vorkommen, dass mir uiview.View.Aliases(0) einen Object variable not set (91) schmeißt? Laut Anwender wurde das Dokument ganz normal in der Kalenderansicht gelöscht (zum Löschen markiert), die im Script auch abgefragt wird.

Das Ereignis greift doch normalerweise direkt beim Drücken der Taste Entf, bzw. auch bei Bearbeiten->Löschen?

Gruß
Demian
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Dokument im EditMode offen, View geschlossen und Entf-Taste drücken. Das ist eine Variante.

Bernhard

Offline Peter Klett

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.713
  • Geschlecht: Männlich
Bernhard meinte bestimmt Lesemodus ...

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
also ich habe das gestern auch schon getestet, wie es sich verhält wenn das Dokument offen (Lese- und Bearb.-Modus) ist. Wird aber trotzdem normal zum Löschen markiert, wenn ich in der Ansicht Entf drücke?

Was ist mit "View geschlossen und Entf-Taste drücken" genau gemeint? Wenn ich außerhalb der View (zum Beispiel im geöffneten Doc) die Entf Taste drücke, passiert wird das nicht registriert  :-:
Gruß
Demian

Glombi

  • Gast
Wenn Du ein Dokument im Lesemodus geöffnet hast und dann die Entf Taste drückst, wird das Dokument mit dem Löschflag gekennzeichnet. Wenn Du nach dem Öffnen des Dokument die View schließt und dann wieder ins Dokument gehst, wird es wohl so sein, dass das View Event nicht zieht. Vielleicht zieht es sogar dann nicht, wenn die View noch offen ist. Müsstest Du  mal testen.

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Wenn Du ein Dokument im Lesemodus geöffnet hast und dann die Entf Taste drückst, wird das Dokument mit dem Löschflag gekennzeichnet.

Ich kann das nicht reproduzieren. Wenn ich dann die Entf-Taste drücke passiert nichts. Das Dokument wird auch nicht zum Löschen markiert?
Gruß
Demian

Offline koehlerbv

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 20.460
  • Geschlecht: Männlich
Peter hat natürlich Recht - ich meinte den ReadMode. Sorry.

Bernhard

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Also ich hab das jetzt in der Mail-DB so getestet, da wird die Mail auch gelöscht, wenn ich bei offenem Maildokument Entf drücke, in meiner DB aber nicht.

Die User sind Autoren und haben nur die Rechte "Dokument erstellen", "Dokument löschen" und "öffentliche Doks lesen" / "schreiben". Die zu löschenden Dokumente haben ein Autorenfeld in denen der Username sowie eine separate Rolle eingetragen wird.

Warum jetzt in meiner DB das Löschen bei geöffnetem Dokument gar nicht funktioniert, kann ich mir jetzt grad nicht erklären  ???
 
Gruß
Demian

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
also ich muss das Thema leider nochmal hoch holen. Es scheint sich hier um einen generellen "Bug" zu handeln. Ich habe es jetzt zum 1. Mal auch hingekriegt, dass  uiview = Nothing ist. Trotz Löschen aus der Ansicht heraus (siehe Screenshot).

Ich hatte nach dem 1. Auftreten den Code wie folgt geändert:

Code
Sub Querydocumentdelete(Source As Notesuidatabase, Continue As Variant)
	'*********************************************************************************************************************************
	'doc deleting only with the shared action allowed
	'*********************************************************************************************************************************
	On Error Goto ErrHandle	
	'*********************************************************************************************************************************	
	Const EventName = "Querydocumentdelete" 'for reports	
	'*********************************************************************************************************************************	
	Dim s As New NotesSession	
	Dim work As New NotesUIWorkspace
	Dim uiview As NotesUIView
	'*********************************************************************************************************************************	
	
	Call ReportWrite (EventName & " - prüfe ob Dokument gelöscht werden darf")
	
	Set uiview = work.CurrentView
	
	If uiView Is Nothing Then Goto NotDelete
	
	If uiview.View.Aliases(0) = "ReservationCalendar" _
	Or uiview.View.Aliases(0) = "ReservationList" _
	Or uiview.View.Aliases(0) = "ReservationByUser" Then
		Call ReportWrite (EventName & " - Dokumente dürfen gelöscht werden")
		
		'RETURN
		Continue = True
		Goto Leave
	Else
		Goto NotDelete
	End If 'uiview.View.Aliases(0) = "ReservationCalendar" _
	
	
NotDelete:
	Msgbox "Das Löschen ist nur über die vorgesehenen Schaltflächen zulässig."
	Call ReportWrite (EventName & " - Löschen unterbunden")
	
	'RETURN
	Continue = False			
	
Leave:
	Exit Sub
	
	
ErrHandle:
	Call ReportWriteError(EventName & " - Error" & Str(Err) & ": " & Error$ & " in Zeile " & Erl)
	Msgbox "Error" & Str(Err) & ": " & Error$ & " in Zeile " & Erl
	'RETURN
	Continue = False		
	Resume Leave
End Sub

Ich habe eigentlich nur ein paar andere Dokumente (auch in anderen DB's) berbeitet und geschlossen und daraufhin das Dokument aus der Ansicht (Screenshot - ReservationList) löschen wollen. Wirklich reproudziert kriege ich es jedenfalls nicht. Mal greift das Script, mal ist uiview nothing  ???



Gruß
Demian

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Lösung hab ich auch keine aber vielleicht hilft dir "workspace.currentViewAlias" weiter?

Gruß
Roland
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
Hallo Roland,

würde das nicht zum selben Ergebnis führen?  Das Problem ist ja, dass in bestimmten Konstellationen "CurrentView" trotz aktvierter Ansicht nicht gesetzt wird.

Gruß
Demian
Gruß
Demian

Offline pram

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 1.170
  • Geschlecht: Männlich
    • Foconis Object Framework
Hallo Demian,

vergesst das mal ganz schnell wieder, hab da heute früh was verwechselt, die Methode "currentViewAlias" ist eine eigene (und wenn ich in die Notes-Hilfe geschaut hätte, hätte ich  dies auch sehr schnell festgestellt ::) )

Übrigens, durch Zufall hatte ich das Phänomän heute auch in einer ViewAktion. Gesetzt wird die View mit
sub queryOpen(source...)
  set myUiView = source
end sub

Später in der Aktion war wohl myUiView NOTHING. Muss aber dazu sagen dass ich die View aus dem Designer heraus geöffnet hatte was vermutl. der Grund war.
Konnte den Fehler aber dann nicht mehr reproduzieren.

Gruß
Roland


p.S. ggf könnte man den Fehler reproduzieren wenn währenddessem jemand am Server einen Drop-All ausführt...
Roland Praml

IBM Certified Application Developer - Lotus Notes and Domino 8
Ich verwende das Foconis Object Framework

Offline Demian

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 569
  • Geschlecht: Männlich
ah, ich dachte du meintest workspace.currentView.ViewAlias. Das hatte ich nämlich in der Hilfe gefunden und mich auch gleich gefragt, warum ich eigentlich workspace.currentView.View.Alias(0) nutze  ;D

Code
p.S. ggf könnte man den Fehler reproduzieren wenn währenddessem jemand am Server einen Drop-All ausführt...
Ich denke, dass kann ich bei uns ausschließen, dass das der Fall war. Unser Admin war in Urlaub, wo ich den Screenshot gemacht hatte.
 
Ob ich an dem Tag die View aus dem Designer geöffnet habe, kann ich so genau gar nicht mehr sagen. Aber der User, wo das zum 1. Mal passiert war, hat defintiv keinen Designer.

Gruß
Demian

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz