Imprimir página | Cerrar ventana

Locked ciertos items de un combobox tras IF

Impreso de: Foro de Access y VBA
Categoría: Access y VBA
Nombre del foro: Access y VBA
Descripción del foro: Foro de programacion en Access (Con código y sin código)
URL: http://www.mvp-access.com/foro/forum_posts.asp?TID=84452
Fecha de impresión: 22/Noviembre/2019 a las 14:35


Tema: Locked ciertos items de un combobox tras IF
Publicado por: ROBERTO_1980
Asunto: Locked ciertos items de un combobox tras IF
Fecha de publicación: 15/Abril/2019 a las 13:00

Hola buenos días a todos/as:

 Por favor, necesitaría me echaran un cable con lo que necesito:

 En un form de access, tengo incluido un combobox en el cual deseo que el usuario puedan ver todos los items del combobox, pero que en función de un if pueda elegir solo los item no bloqueados.
En mi caso el if sería en función del perfil del usuario logado: if lbl_perfil_activo =2 Then bloqueale los items 0 y 2 , pero no le bloques el item 1, del comobobox. 

Lo que no se, es como poner es el código a partir del Then (en el código que he anotado debajo lo anoto en rojo)

No se si me explico. Pongo el código que tengo hasta ahora:

Private Sub cc_Financial_Status_Change()
' Establezco variables
Dim Valor_id As Long
Dim Perfil_Activo As Long
Dim i As Integer
Dim Msg As String

' Me traigo el id del valor del item seleccionado, el id del tipo de perfil logado
Valor_id = Me.cc_Financial_Status.Value
Perfil_Activo = Me.lbl_Perfil_Activo

   ' Refresco el cbo
   Me.cc_Financial_Status.Requery
   
   ' Condición
    If Perfil_Activo = 2 And Valor_id = 0 Or Valor_id=2 Then
   
     Me.cc_Financial_Status.ItemsSelected.Locked = True
            
    Else
   
     Me.cc_Financial_Status.ItemsSelected.Locked = False
    End If

End Sub


Espero sus respuestas muy amables de antemano
Roberto



Respuestas:
Publicado por: xavi
Fecha de publicación: 15/Abril/2019 a las 17:31
Hola,

Como primera idea: cambia el RowSource del combo en función del Perfil_Activo de modo que solo aparezcan los seleccionables.

Hasta dónde yo se, no puede "deshabilitar" valores de un combo: si se muestra un valor, es elegible.

Un saludo


-------------
Xavi, un minyó de Terrassa

http://www.llodax.com" rel="nofollow - Mi web


Publicado por: ROBERTO_1980
Fecha de publicación: 16/Abril/2019 a las 08:48
Buenos días Xavi,

Muchas gracias por tu respuesta.

La opción que dices no es mala, pero necesito que en el desplegable se muestren todas las opciones.

La idea es mostrar todos los items del combo, pero que por el tipo de perfil, el usuario solo pueda seleccionar los estados específicos a su perfil.

Un combo es cascada tampoco me sería válido, pues me acotaría los items
combo perfil: 2 (tipo perfil)   combo estados: 4,9

Si a alguien se le ocurre alguna manera de hacerlo, por favor, no dudeis en contestarme
Muchas gracias a todos de antemano


Publicado por: Mihura
Fecha de publicación: 16/Abril/2019 a las 09:42
Controla en el evento After_Update el valor escogido y el usuario, en caso de que no correspondan borra el valor escogido:

Select Case Perfil
Case 1
               If Me.Combo = 1 Or Me.Combo = 2 then Me.Combo = ""
Case 2
               If Me.Combo = 3  then Me.Combo = ""
        ...
End Select




-------------
Jesús Mansilla Castells.
Saludos desde Móstoles.

http://www.accessaplicaciones.com" rel="nofollow - Access Aplicaciones
http://www.tecsys.es" rel="nofollow - Tecsys.es


Publicado por: VIMIPAS
Fecha de publicación: 17/Abril/2019 a las 16:58
Buenas tardes.

En efecto, no se pueden bloquear filas de Combos.... pero nadie nos impide crear un formulario continuo y de la misma que encontramos una flechita para abrir el "combo", podemos tener en vez de un combo un formulario continuo con todas las opciones y poner un boton que abra ese formulario.

Y???? que???, como seguimos.

En ese formulario continuo deberíamos tener dos campos: Campo1 (las opciones), Campo2 (autorizado para el perfil). Este segundo campo, que es la clave para lo que explico, deberá estar en la propiedad Visible=no.

Entonces le pondremos a este formulario, en el campo1 y "en formato condicional" y dentro de "La expresión es" esto:

[campo1]<>Formularios!NOMBRE!PERFILES_AUTORIZADOS

y punto determinante, se pulsa al final a la derecha (bloquear) en la condición.

Quiero decir que Campo1 debe tener lo mismo que PERFILES_AUTORIZADOS, para no despistarnos. Y el Formularios!nombre!perfiles_autorizados debe tener la etiqueta que indica Roberto.... ya que en mi caso lo he puesto como control de texto.

Lo que conseguimos, es que se bloquean todos aquellos que NO tienen el mismo número de autorizado en el formulario que tenemos abierto.

Probar y si hay alguna duda, por aquí andamos.

Saludos.


-------------
Gracias


Publicado por: ROBERTO_1980
Fecha de publicación: 17/Abril/2019 a las 18:47
Buenas tardes Mihura,

Disculpa no haya respondido antes.

Vaya que buen planteamiento me acabas de hacer. Pinta bien

Lo probaré en cuanto pueda, y os respondo con el resultado.

Muchísimas gracias de antemano. Mil gracias


Publicado por: ROBERTO_1980
Fecha de publicación: 17/Abril/2019 a las 18:51
Buenas tardes Vimipas:

Muchísimas gracias por tu interesante aportación (da gusto la gente como ayuda en el foro¡¡).

Le echaré un ojo también a tu opción en cuanto pueda y te respondo al respecto.

Muchas gracias de nuevo.

Un saludo.



Imprimir página | Cerrar ventana