Como crear sesiones Independientes Lotus Notes
Hice una aplicaicón en lotus Domino Designer 6.54
La estoy corriendo en un servidor 8.5...
Tiene un Frame, Page, OutLines para poder organizar las vistas que aparecen...
Ahora:
El detalle de todo esto es que Tengo una vista que indique los permisos que tiene cada usuario, esto con la intención de hacer una arborecencia...
El Dirctor General puede ver todo, Los directores de cada área pueden ver exclusivamente las gerencias de su área, cada geente puede ver el contenido de su gerencia, y los de abajo solo nos vemos a nosotros...
La vista tiene:
Nombre del Empleado <- este es igual al q aparece en @names([CN];@username)
Departamento ( Gerencia) <- texto
Dirección <-texto...
Si el usuario aparece aquí... Se crea una nueva fórmula...
Acción:
Sub Click(Source As Button)
'Clases Lotus
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim session As New NotesSession
Dim view As NotesView
Dim item As NotesInternational
Dim ws As New NotesUIWorkspace
Dim uiview As NotesUIView
'Generales
Dim Respuesta As Boolean
Dim user As String
Dim temporal As Variant
Dim formula As String
Dim Direccion As Variant
Dim Departamento As Variant
Dim Nombre As String
Dim Apellido As String
' formula general, esta formula la tienen todos los usuarios en un principio..
' SELECT ((Form = "CU-F-005")) & (@Contains(@UpperCase(CMF005Correo); @UpperCase(@Name ([CN];@UserName))))
Set db = session.CurrentDatabase
Set doc = New NotesDocument(db)
formula ="SELECT ((Form =" +Chr(34)+ "PA-F-006" +Chr(34) +")) & (@Contains(@UpperCase(PAF006Empleado); @UpperCase(@Name ([CN];@UserName))))"
Err=0
On Error Resume Next
Set collection = db.Search(Formula,Nothing,0)
If Err <>0 Then
Messagebox "Error" & Str(Err) & ": " & Error$
Else
formula=""
If collection.Count > 0 Then
'Activar la vista particular
Set doc = collection.GetFirstDocument
Print
If Err <>0 Then
Messagebox "Error" & Str(Err) & ": " & Error$
Else
Err=0
On Error Resume Next
Direccion = doc.GetItemValue ("PAF006Direccion")
Departamento = doc.GetItemValue ("PAF006Departamento")
Direccion = Direccion(0)
Departamento = Departamento(0)
If Len(Trim(Direccion))> 0 And Len(Trim(Departamento))> 0 Then
Messagebox "Error: Tus permisos están mal configurados. " +Chr(13)+ "Reportalo a Recursos Humanos"
Else
'Messagebox "Carga Direccion y depto...", 0, "Error"
If Err <>0 Then
Messagebox "Error" & Str(Err) & ": " & Error$
Else
If Ucase(Direccion) ="TODOS" Then
formula ="SELECT ((Form =" +Chr(34)+ "CU-F-005" +Chr(34) +"))"
Elseif Direccion <> "" Then
formula ="SELECT ((Form =" +Chr(34)+ "CU-F-005" +Chr(34) +")) & (@Contains(CMF005Direccion; " +Chr(34)+ Cstr(Direccion)+Chr(34)+ "))"
Elseif Departamento <> "" Then
formula ="SELECT ((Form =" +Chr(34)+ "CU-F-005" +Chr(34) +")) & (@Contains(CMF005Departamento; " +Chr(34)+ Cstr(Departamento)+Chr(34)+ "))"
End If
End If
End If
End If
Else
'Activar la vista particular
formula = "SELECT ((Form = " + Chr(34)+ "CU-F-005" +Chr(34) +")) & (@Contains(@UpperCase(CMF005Correo); @UpperCase(@Name ([CN];@UserName))))"
End If
Set uiview = ws.CurrentView
Set view = uiview.View
view.SelectionFormula = formula
Call ws.ViewRebuild
End If
End Sub
Como puedo hacer que esta acción se ejecute una ves abierta la vista...
Ya probé los métodos que tiene la view... Pero en todos marca error por el CurrentView... Que no se ha creado...
O como puedo hacer para si yo hago cambios no en un perfil no afete a otros...
Me explico, hay una vista Empleados...
Esta vista indica a un solo individuo, o si tines una gerencia a ti y a tus sobordinados... O a una dirección y sus subordinados...
Así que cada quién tiene que ver la parte que le corresponde...
Si no esta en la vista de permisos ( PAF006 ) unicmante se puede vel a él mismo...
Pero si yo modifico algo en algún usuario todos ven eso...
Ya active la opicón de "Restore as last viewed by user" en Launch de Database...
Espero tus comentarios y/o dudas al respecto...
Si un usuario actualiza, a los demás nos aparece la flecha para refrescado... Pero si lo haces... T muestra los permisos de otra persona... En lugar de los propios...
La estoy corriendo en un servidor 8.5...
Tiene un Frame, Page, OutLines para poder organizar las vistas que aparecen...
Ahora:
El detalle de todo esto es que Tengo una vista que indique los permisos que tiene cada usuario, esto con la intención de hacer una arborecencia...
El Dirctor General puede ver todo, Los directores de cada área pueden ver exclusivamente las gerencias de su área, cada geente puede ver el contenido de su gerencia, y los de abajo solo nos vemos a nosotros...
La vista tiene:
Nombre del Empleado <- este es igual al q aparece en @names([CN];@username)
Departamento ( Gerencia) <- texto
Dirección <-texto...
Si el usuario aparece aquí... Se crea una nueva fórmula...
Acción:
Sub Click(Source As Button)
'Clases Lotus
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim collection As NotesDocumentCollection
Dim session As New NotesSession
Dim view As NotesView
Dim item As NotesInternational
Dim ws As New NotesUIWorkspace
Dim uiview As NotesUIView
'Generales
Dim Respuesta As Boolean
Dim user As String
Dim temporal As Variant
Dim formula As String
Dim Direccion As Variant
Dim Departamento As Variant
Dim Nombre As String
Dim Apellido As String
' formula general, esta formula la tienen todos los usuarios en un principio..
' SELECT ((Form = "CU-F-005")) & (@Contains(@UpperCase(CMF005Correo); @UpperCase(@Name ([CN];@UserName))))
Set db = session.CurrentDatabase
Set doc = New NotesDocument(db)
formula ="SELECT ((Form =" +Chr(34)+ "PA-F-006" +Chr(34) +")) & (@Contains(@UpperCase(PAF006Empleado); @UpperCase(@Name ([CN];@UserName))))"
Err=0
On Error Resume Next
Set collection = db.Search(Formula,Nothing,0)
If Err <>0 Then
Messagebox "Error" & Str(Err) & ": " & Error$
Else
formula=""
If collection.Count > 0 Then
'Activar la vista particular
Set doc = collection.GetFirstDocument
If Err <>0 Then
Messagebox "Error" & Str(Err) & ": " & Error$
Else
Err=0
On Error Resume Next
Direccion = doc.GetItemValue ("PAF006Direccion")
Departamento = doc.GetItemValue ("PAF006Departamento")
Direccion = Direccion(0)
Departamento = Departamento(0)
If Len(Trim(Direccion))> 0 And Len(Trim(Departamento))> 0 Then
Messagebox "Error: Tus permisos están mal configurados. " +Chr(13)+ "Reportalo a Recursos Humanos"
Else
'Messagebox "Carga Direccion y depto...", 0, "Error"
If Err <>0 Then
Messagebox "Error" & Str(Err) & ": " & Error$
Else
If Ucase(Direccion) ="TODOS" Then
formula ="SELECT ((Form =" +Chr(34)+ "CU-F-005" +Chr(34) +"))"
Elseif Direccion <> "" Then
formula ="SELECT ((Form =" +Chr(34)+ "CU-F-005" +Chr(34) +")) & (@Contains(CMF005Direccion; " +Chr(34)+ Cstr(Direccion)+Chr(34)+ "))"
Elseif Departamento <> "" Then
formula ="SELECT ((Form =" +Chr(34)+ "CU-F-005" +Chr(34) +")) & (@Contains(CMF005Departamento; " +Chr(34)+ Cstr(Departamento)+Chr(34)+ "))"
End If
End If
End If
End If
Else
'Activar la vista particular
formula = "SELECT ((Form = " + Chr(34)+ "CU-F-005" +Chr(34) +")) & (@Contains(@UpperCase(CMF005Correo); @UpperCase(@Name ([CN];@UserName))))"
End If
Set uiview = ws.CurrentView
Set view = uiview.View
view.SelectionFormula = formula
Call ws.ViewRebuild
End If
End Sub
Como puedo hacer que esta acción se ejecute una ves abierta la vista...
Ya probé los métodos que tiene la view... Pero en todos marca error por el CurrentView... Que no se ha creado...
O como puedo hacer para si yo hago cambios no en un perfil no afete a otros...
Me explico, hay una vista Empleados...
Esta vista indica a un solo individuo, o si tines una gerencia a ti y a tus sobordinados... O a una dirección y sus subordinados...
Así que cada quién tiene que ver la parte que le corresponde...
Si no esta en la vista de permisos ( PAF006 ) unicmante se puede vel a él mismo...
Pero si yo modifico algo en algún usuario todos ven eso...
Ya active la opicón de "Restore as last viewed by user" en Launch de Database...
Espero tus comentarios y/o dudas al respecto...
Si un usuario actualiza, a los demás nos aparece la flecha para refrescado... Pero si lo haces... T muestra los permisos de otra persona... En lugar de los propios...
1 Respuesta
Respuesta de josenotes
1