Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: DannyCrown am 29.05.08 - 09:42:56

Titel: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: DannyCrown am 29.05.08 - 09:42:56
Hallo Leute,

habe mal wieder ein Problem. Hab auch hier schon viel gesucht, aber nichts passendes gefunden. Es geht sich um folgendes:
Ich habe eine Ansicht und die User, welche nur Editorrechte haben, können mit klick auf einen Button folgenden Quelltext aufrufen.

Code
Sub Click(Source As Button)
%REM	
Diese Funktion öffnet eine Maske um die Auswahlkriterien der Ansicht zu aktualisieren.

veränderte globale Variablen:
	keine
%ENDREM
	Dim session As New NotesSession	
	Dim uiws As New NotesUIWorkspace
	Dim uivw As NotesUIView
	Dim doc As NotesDocument
	Dim vw As NotesView	
	Dim db As NotesDatabase
	Dim varResult As Variant
	
	Set uivw=uiws.CurrentView		
	Set vw=uivw.View
	
	vw.Refresh	
	uiws.ViewRebuild					'Fehler beim ausführen mit Editorrechten
	uiws.ViewRefresh
	
	'Das Profildokument wird geladen, sowie die Maske für die Filterkriterien
	Set db = session.CurrentDatabase
	Set doc = db.GetProfileDocument("frmVorlage")
	
	If vw.EntryCount>0 Then
		varResult = uiws.DialogBox("frmZeitraum",True, True,True,True,False,False,"Bitte geben Sie die Filterkriterien ein:",,True,True)
		
	'Es erfolgt die Überprüfung ob ein Wert gegeben ist
		If varResult Then	
			Dim strTag As String
			Dim strMonat As String
			Dim strJahr As String
			Dim strFormula As String
			
		'Die Auswahlformel wird erstellt und dieser Ansicht zugewiesen. Im Anschluss wird diese neu geladen und die urpsrüngliche Auswahlformel wird eingetragen.
			varResult = doc.GetItemValue("datStart")
			strTag = Mid(Cstr(varResult(0)), 1,2)
			strMonat = Mid(Cstr(varResult(0)), 4,2)
			strJahr = Mid(Cstr(varResult(0)), 7,4)
			
			strFormula = "SELECT Form='frmTicket'" _
			+ " & (@Date(@TextToNumber(@Middle(DocCreateDate;6;4)); @TextToNumber(@Middle(DocCreateDate;3;2)); @TextToNumber(@Middle(DocCreateDate;0;2)))" _
			+ ">=@date(" + strJahr + ";" + strMonat + ";" + strTag + "))"
			
			varResult = doc.GetItemValue("datEnde")
			strTag = Mid(Cstr(varResult(0)), 1,2)
			strMonat = Mid(Cstr(varResult(0)), 4,2)
			strJahr = Mid(Cstr(varResult(0)), 7,4)
			
			strFormula = strFormula + " & (@Date(@TextToNumber(@Middle(DocCreateDate;6;4)); @TextToNumber(@Middle(DocCreateDate;3;2)); @TextToNumber(@Middle(DocCreateDate;0;2)))" _
			+ "<=@date(" + strJahr + ";" + strMonat + ";" + strTag + "))"
			
			Set uivw = uiws.CurrentView		
			Set vw = uivw.View
			
			vw.SelectionFormula = strFormula			'Fehler beim ausführen mit Editorrechten
			vw.Refresh	
			uiws.ViewRebuild								'Fehler beim ausführen mit Editorrechten
			uiws.ViewRefresh
			vw.SelectionFormula = "SELECT Form='frmTicket' & sichtbarkeit='0'"		'Fehler beim ausführen mit Editorrechten
		Else 'Falls der User den Zeitraumdialog abbricht
			vw.SelectionFormula = "SELECT Form='frmTicket' & sichtbarkeit='0'"		'Fehler beim ausführen mit Editorrechten
			vw.Refresh	
			uiws.ViewRebuild								'Fehler beim ausführen mit Editorrechten
			uiws.ViewRefresh
		End If	
	Else
		Messagebox "Es sind keine Datensätze vorhanden!", 0, "Fehler"
	End If
End Sub

Es wird eine neue Form nämlich frmZeitraum geöffnet. Dort gibt es nur 2 Datumsfelder, datStart und datEnde, welche in einfache Felder in der Form frmVorlage gespeichert werden. Das klappt ja auch alles so wie es ist super, aber leider nur mit ManagerRechten. Hab hier auch schon gelesen, dass das ViewRebuild nur von Managern ausgeführt werden kann.
So, nun weiß ich aber leider nicht, wie ich es anders lösen kann. Es wäre sehr nett, wenn ihr mir helfen könntet. Die Stellen, an der der "normale" User Probleme hat hab ich markiert.

MfG Daniel
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: Werner Götz am 29.05.08 - 10:09:30
Die Aufrufe uiws.ViewRefresh und uiws.ViewRebuild sollten aus meiner Sicht gar nicht nötig sein ...

Ansonsten könnte man den Agenten in 2 Agenten trennen:
1. Dialogbox und Schreiben des Profildokuments
2. Setzen der Selectionformel der Ansicht auf Basis des Profildokuments und anschließend Aufruf von View.Refresh

Den 2. Agenten dann aus dem 1. Agenten via RunOnServer aufrufen, dann gibt es keine Probleme bzgl. Berechtigungen, selbst "normale" Anwender (Autoren) können die Funktion dann aufrufen.
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: DannyCrown am 29.05.08 - 10:28:32
also eigentlich hab ich ja gar keinen Agenten und wollte auch keinen einbauen, da ich keine Ahnung von Agenten habe und Sie auch noch nie benutzt habe.
Aber trotzdem danke!
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: DannyCrown am 30.05.08 - 07:10:44
hat da niemand eine andere Idee???
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: Johnson am 30.05.08 - 09:32:44
Ich hab nicht alles durchgelesen, aber schau mal hier: http://www.ibm.com/developerworks/lotus/library/ls-LS_views/index.html

Vielleicht hilft's weiter.
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: Johnson am 30.05.08 - 09:36:01
Da fällt mir grad ein:
Ist es überhaupt möglich, dass Benutzer ohne Designerrechte die SelectionFormula einer View änderen dürfen?
Vielleicht bei ginge das auch nur bei einer private Ansicht.
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: Werner Götz am 02.06.08 - 08:14:28
Bei dem von mir oben genannten Lösungsansatz sollte das kein Problem sein.

-Werner
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: eknori am 02.06.08 - 08:22:09
Zitat
Ist es überhaupt möglich, dass Benutzer ohne Designerrechte die SelectionFormula einer View änderen dürfen?
Vielleicht bei ginge das auch nur bei einer private Ansicht.

Nein, ist nicht möglich. Es sei denn, man macht es so, wie Werner das vorgeschlagen hat.

Habe mal grob drübergeschaut.
Du willst nicht im Ernst jedem User, der Zugriff auf die Datenbank hat, die Möglichkeit geben, die Formel für die Ansichtenauswahl einer allen Usern zugänglichen Ansicht zu ändern?

Das wird mir ja ein schönes Chaos geben.

Unter R4 habe ich immer PutInFolder verwendet, um eine Auswahl von Dokumenten gem. Uservorgaben zu selektieren. Vor den PutInFilder gab es ein RemoveAllFromFolder, um die letzte Selektion wieder zu entfernen. 
Titel: Re: Rechteproblem mit ViewRebuild und SelectionFormula
Beitrag von: DannyCrown am 02.06.08 - 10:22:57
doch, dass hatte ich eigentlich vor. Sind auch nur 2 User, also das wird schon gehen.
Habe bei diesen beiden Usern jetzt bei der Zugriffskontrolle ein Häckchen gesetzt bei "Private Ansichten/Ordner erstellen" gesetzt und jetzt klappts.
Trotzdem nochmal vielen Dank an alle