Domino 9 und frühere Versionen > ND6: Entwicklung
Rechteproblem mit ViewRebuild und SelectionFormula
DannyCrown:
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
--- Ende Code ---
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
Werner Götz:
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.
DannyCrown:
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!
DannyCrown:
hat da niemand eine andere Idee???
Johnson:
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.
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln