Access - Ribbon dinamico para access 2010

   
Vista:

Ribbon dinamico para access 2010

Publicado por Diego Martinez (1 intervención) el 17/12/2013 16:10:02
Estoy desarrollando una aplicaccion en access 2010 con un ribbon personalizado, ya logre este paso pero lo que necesito ahora es hacer que según el usuario que se loguee filtre los botones del ribbon para impedir el acceso a ciertas partes del sistema.

He logrado desactivar y ocultar los botones desde un evento Clic de un boton pero no logro que esto se haga a través de un blucle automáticamente.

Este es el codigo que estoy usando

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sub GetVisible(control As IRibbonControl, ByRef visible)
' evento al cargar el ribbon
 
    Select Case control.id
 
        Case "btn0"
             visible = bolVisible
        Case "btn1"
             visible = bolVisible
        Case "btn2"
             visible = bolVisible
 
......
        Case Else
            visible = bolVisible
 
    End Select

Luego en el evento del btn login

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
' Funcion que filtra el Ribbon segun el usuario registrado
Public Function fnFiltrarRibbon()
    Dim k As Integer
    Dim i As Integer
    Dim varStrBtnName As String
    Dim varAcceso As Boolean
 
    ' Cuento el numero de botones habilitados
    k = DCount("btnName", "sysCtaRibbonAccess")
    ' Genero un bucle para pasar boton por boton activando o desactivando
    For i = 1 To k
        varStrBtnName = "btn" & i - 1 'Genero una variable con el nombre del boton
        varAcceso = DLookup("Acceso", "sysCtaRibbonAccess", "idBtn = " & i)
        If varAcceso = "False" Then
           bolVisible = False
        ElseIf varAcceso = "True" Then
           bolVisible = True
        End If
        Call bucleAsignacion(varStrBtnName) ' Llamo a la funcion que pasa por los botones
    Next i
End Function
 
Sub bucleAsignacion(varStrBtnName)
 
        Select Case varStrBtnName
        Case "btn0"
            gobjRibbon.InvalidateControl "btn0"
        Case "btn1"
            gobjRibbon.InvalidateControl "btn1"
        Case "btn2"
            gobjRibbon.InvalidateControl "btn2"
.....
        Case Else
            visible = True
 
    End Select
End Sub


Agaradezco cualquier ayuda que me puedan dar, el problema que me surge es el error 5 en tiempo de ejecucion y se "frena" el select case en el case"btn0"

Por si se lo preguntan todos los botones tienen un id = btn0, btn1, btn2.... y su id en la tabla que tiene un campo si/no para habilitarlo segun el usuario arranca en 1 y hay 100 botones preparados.

la idea es hacer esto para tenerlo como base para todos mis futuros proyectos.


si necesitan la base de datos se las puedo enviar ya que por el momento solo tiene el sistema de loguin

gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder