Access - Activar campos a partir de cuadro de lista multivalor

 
Vista:
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 12/08/2020 16:19:38
Saludos. Acá les pongo un problema que tengo en el diseño de una base de datos en Access, para que me den una ayuda dentro de lo posible.

Tengo un campo que es un cuadro de lista con selección múltiple de valores, que son:
1- Jefe de carrera
2- profesor principal de año
3- Coordinador de curso encuentro
4- Jefe de disciplina

Tengo ademas otros 3 campos nombrados:
- Disciplina
- Profesor principal de año
- Corrdinador C.E

Necesito que cuando seleccione las opciones 2,3 y/o 4 (puede ser una o las 3 a la vez) se me activen las campos correspondientes a ellas. Ejemplo: si activo la casilla que dice Jefe de disciplina, entonces se me active el campo que dice Disciplina, para entonces seleccionar la disciplina que dirige ese profesor.

Muchas gracias y agradecido.
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
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 13/08/2020 11:00:19
Lo que tienes que hacer es mirar que campos tienes seleccionados y eso se hace fácil con algo así:

1
2
3
4
5
6
7
8
9
10
11
Var item as variant
For Each item in Me.nombreLista.ItemsSelected
valorItem=me.nombreLista.ItemData(item)
if valorItem="Disciplina" then
me.ControlDisciplina.visible=true
o
me.ControlDisciplina.enabled=true
Else If valorItem="..." then
...
End If
Next item

Normalmente se usaría enable más que Visible, pero cualquiera te servirá...

Esa es una opción de idea para que soluciones lo que pides.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 13/08/2020 18:36:08
Saludos Manuel.
Ante todo muy agradecido por tu ayuda.
Pienso que esa es la solución y que yo la estoy implementando mal, pues no soy muy conocedor de access y menos de la parte de programación.
aquí te copio como lo implemente para que me corrijas donde tengo el error. El cuadro de lista se llama cargos_metod y es ahí donde están las primeras 4 opciones que selecciono a traves de un checkbox (1- Jefe de carrera, 2- profesor principal de año, 3- Coordinador de curso encuentro, 4- Jefe de disciplina), los nombres de los campos que deben activarseme según seleccione en el cuadro de lista son: disciplina, prof_princ_año, Coord_ce, esa parte de programación la puse en un evento despues de actualizar y seleccionando generador de código, que aqui te lo dejo, pero me da un error. las lineas donde estan los else if me salen en rojo, al igual que var item as var y subrayado en amarillo el private sub
Gracias de antemano por la ayuda que puedas darme.

Private Sub cargos_metod_AfterUpdate()
Var item as variant
For Each Item In Me.cargos_metod.ItemsSelected
valorItem = Me.cargos_metod.ItemData(disciplina)
If valorItem = "disciplina" Then
Me.Controldisciplina.Enabled = True
Else If valorItem = "prof_princ_año" Then
Me.Controldisciplina.Enabled = True
Else If valorItem = "Coord_ce" then
Me.Controldisciplina.Enabled = True
End If
Next Item
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 13/08/2020 22:10:24
De nada, es un verdadero placer.

Esa es la dirección correcta para hacerla, pero revisa partes como esta:

1
2
For Each Item In Me.cargos_metod.ItemsSelected
valorItem = Me.cargos_metod.ItemData(disciplina)

en donde pones disciplina debería ser item.

los Item son los elementos seleccionados, pero no exactamente su valor, sino su posición, después con eso mirando ItemData tienes el valor.

Empieza con eso y seguimos después con lo que vaya surgiendo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 13/08/2020 22:43:19
Saludos Manuel. Gracias por la rápida respuesta. Le pido por favor que sea paciente conmigo pues en esta parte de la programación no la domino y mis conocimientos son algo básicos.
hice lo que me acabas de sugerir y aquí te describo los resultados en 2 imagenes que te pongo, una para que veas los campos sobre los que trabajaré y la otra el error que me da. tambien te copio como me quedó

Private Sub cargos_metod_AfterUpdate()
Var item as variant --------------------------------------------------------) aquí me pone error de sintaxis (color rojo)
For Each Item In Me.cargos_metod.ItemsSelected
valorItem = Me.cargos_metod.ItemData(Item)
If valorItem = "disciplina" Then
Me.Controldisciplina.Enabled = True
Else: Me.Controldisciplina.Enabled = False ---------------------) adicioné esta linea (corrigeme si está mal), pues quiero que si no selecciono el item disciplina, pues el campo me aparezca deshabilitado para que no me lo seleccionen por error y así lo quiero para los campos: Profesor principal de año, Corrdinador C.E
End If
Next Item


En espera de su respuesta.
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 14/08/2020 10:45:09
De nada.

Vamos por partes, en cuanto al primer error, es que te lo puse mal yo, no es Var item as variant, es:
1
Dim item as Variant
Lo siento, al final estas tocando varios lenguajes y ya sabes, despistes de estos... confundí de lenguaje ahí.

En cuanto a la segunda parte, pues yo directamente partiría de ellos deshabilitados y solo habilitaría los adecuados en cada momento. Y siempre es bueno, aunque access ya haga mucho por ti, que tu tengas ese cuidado. Puedes complicar el if poniendo los que quieres dependiende de ello, como activos y los demás claramente desactivados.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 15/08/2020 16:46:29
Saludos Manuel.
Ayer no pude comunicarme con usted debido a que celebré el cumpleaños 8 de mi niña.
hoy ya pude hacer el cambio sugerido en la programación y aún persiste el error, que le adjunto en imagen y que básicamente dice:
"error de compilación: No se encontró el método o el dato miembro" y me resalta .controldisciplina

1
2
3
4
5
6
7
8
9
Private Sub cargos_metod_AfterUpdate()
Dim item As Variant
For Each item In Me.cargos_metod.ItemsSelected
valorItem = Me.cargos_metod.ItemData(item)
If valorItem = "disciplina" Then
Me.Controldisciplina.Enabled = True
End If
Next item
End Sub


Si le es mas fácil escribirme al correo, puede hacerlo a: noelvista@gmail.com

Gracias por su ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 16/08/2020 17:36:51
Tu tranquilo, lo vamos a sacar entre todos.

En cuanto al error, pues no lo tengo fijo, es como si control que se intenta deshabilitar/habilitar no tuviera ese nombre, porque lo que dice es que no conoce ese control. Revisa que el nombre sea exactamente así. Si lo es, envíame una captura de la pestaña propiedades del control para ver si vemos otras opciones. Y si puedes, envíame el archivo de access, no tiene que ser todo, solo una copia con solo ese formulario, así no me envías nada de datos que puedas tener protegidos, aunque si a mayores viene con la tabla a la que está enlazado el formulario pues aún mejor (no hacen falta datos ningunos).

PD: disfruta de tu hija, que son sus mejores años... ella se acordará de todo lo bien que la trates en esta época de la vida, eso no lo olvidan jamás.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 17/08/2020 16:14:43
Saludos Manuel.

Aqui te envío integra la base de datos. no hay nada que ocultar. esta base de datos es un examen de premio que me dijeron que hiciera en la universidad y que podía usar todos los recursos a mi disposición y como ahora estamos en coronavirus, y demoran los centros educacionales en abrir pues aprovecho y lo adelanto, asi como comence a trabajar en otra base de datos que si es para un proyecto final del curso, que me resolverá un problema laboral y además la puedo usar con fines docentes y ya esa será otro dolor de cabeza más.

Buen día para usted.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 18/08/2020 12:23:01
Hola. Ya la estoy viendo y ya veo porque te daba problemas... digamos que hay Access es muy flexible y hay controles propios de Access y controles ActivectX, etc. Tu y yo estabamos tratando controles similares (la finalidad es la misma e incluso tienen propiedades similares), pero distintos. Con lo que ya te comento un par de cosas, empezando por donde estaba el problema, el código para tu caso es:

1
2
3
4
5
6
7
For i = 0 To Me.cargos_metod.ListCount - 1
If Me.cargos_metod.Selected(i) = True Then
If Me.cargos_metod.ItemData(i) = 2 Then 'Posición del profesor titular del año, pero cada uno tiene su posición
Me.prof_princ_año.Enabled = True
End If
End If
Next i

Por otro lado, debes editar el formulario para que inicialmente, esos controles estén deshabilitados, para posteriormente ir habilitandolos. Es en propiedades de control, pestaña Datos, propiedad Habilitado, cambiar a falso.

Si te haces con Access, verás que es muy agradecido con el tiempo y que te ayudará en tu vida laboral. Con Access nunca pierdes el tiempo, es una inversión con buenos réditos.

hasta luego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 18/08/2020 16:17:26
Saludos Manuel.
!!!! Esa es la respuesta !!!. AGRADECIDÍSIMO.

No obstante me está haciendo un efecto que no me queda bien, (deshabilité los campos por defecto como me sugeriste) y es que cuando selecciono una de las opciones (2,3 ó 4), correctamente se activa el campo correspondiente, PERO, si esa misma opción la de-selecciono, el campo se me queda ya activado, es decir, no regresa a su estado inicial que es desactivado
aquí te pongo la programación completa que hice partiendo de lo que me enviaste y usando la lógica, recuerda que de programación no conozco mucho.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub cargos_metod_AfterUpdate()
For i = 0 To Me.cargos_metod.ListCount - 1
If Me.cargos_metod.Selected(i) = True Then
If Me.cargos_metod.ItemData(i) = 2 Then 'Posición del profesor titular del año
Me.prof_princ_año.Enabled = True
End If
End If
Next i
For j = 0 To Me.cargos_metod.ListCount - 1
If Me.cargos_metod.Selected(j) = True Then
If Me.cargos_metod.ItemData(j) = 3 Then 'Posición de Jefe de disciplina
Me.disciplina.Enabled = True
End If
End If
Next j
For k = 0 To Me.cargos_metod.ListCount - 1
If Me.cargos_metod.Selected(k) = True Then
If Me.cargos_metod.ItemData(k) = 4 Then 'Posición de Coordinador del C.E.
Me.Coord_ce.Enabled = True
End If
End If
Next k
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 18/08/2020 18:37:12
Para que desactive si desmarcas en la lista, simplemente es completar la parte else y ahí poner el enabled a false. Por otro lado, con un solo for puede revisar todos los campos y solo hay que pasarlo una vez, no una por campo. Lo que tienes es una if por cada campo...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
For i = 0 To Me.cargos_metod.ListCount - 1
If Me.cargos_metod.Selected(i) = True Then
If Me.cargos_metod.ItemData(i) = 2 Then
Me.prof_princ_año.Enabled = True
Else If  Me.cargos_metod.ItemData(i) = 3 Then
Me.disciplina.Enabled = True
Else If  Me.cargos_metod.ItemData(i) = 4 Then
Me.Coord_ce.Enabled = True
End If
Else
If Me.cargos_metod.ItemData(i) = 2 Then
Me.prof_princ_año.Enabled = False
Else If  Me.cargos_metod.ItemData(i) = 3 Then
Me.disciplina.Enabled = False
Else If  Me.cargos_metod.ItemData(i) = 4 Then
Me.Coord_ce.Enabled = False
End If
End If
Next i

Revisa el código, que puede tener algún pequeño error, que te estoy contestando desde el móvil sin un PC delante y no es tan fácil. Pero la idea es esa. Así con una sola vuelta del bucle ya activas o desactivas según tengan seleccionado.

Lo que hace este código, aunque supongo que lo entiendes bien, pero por si otro llega aquí. Básicamente es que revisa todas las opciones del list, una a una, mirando si está activada o no, después, dentro de una opción u otra, pues miro si es tal o cual y si lo es, pues actúo en consecuencia: activando o desactivando ese campo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 19/08/2020 00:20:02
Saludos Manuel
Todas las líneas donde aparece el ELSE IF me dan error.
probé algunas combinaciones partiendo de esta ultima secuencia que me enviaste, pero todas me devuelven el mismo problema, al des-seleccionar el checkbox, el campo correspondiente continúa activado.
Discúlpame que te moleste tanto con este problema, pues he escrito en otros 3 foros, y has sido la única persona amable que me ha ayudado y dado seguimiento a mi problema te reitero mi agradecimiento por toda tu preocupación y esfuerzo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 19/08/2020 13:32:48
Hola, los else if hay que ponerlos junto: "ElseIf" sin el espacio: https://docs.microsoft.com/es-es/office/vba/language/concepts/getting-started/using-ifthenelse-statements
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 25
Ha aumentado su posición en 2 puestos en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por noelvis (8 intervenciones) el 19/08/2020 14:55:36
Saludos Manuel.

Una de las asignaturas en la universidad es Introducción a Python y ayer tratando de corregir el problema, casi doy con la solución, pues en ese lenguaje la combinación else/if se escribe ELIF.
Y bueno, con esa aclaración que me haces queda resuelto definitivamente mi problema, ya todo funciona como debe ser, por lo que te envío mi agradecimiento infinito, pues créeme que no lo hubiese logrado sin tu ayuda y paciencia. Aún me quedan mas problemas con Access en el camino con esta base de datos, como es el "enganchar " el formulario principal datos_personales con los otros formularios datos profesionales, Publicaciones y Reconocimientos, que son parte de los datos que pertenecen a la persona declarada en los datos personales.
Espero poder contar con tu ayuda en el futuro. Ya tienes mi correo y por ahí puedes escribirme cuando lo desees.

PARA LOS USUARIOS QUE LEEN ESTE TEMA, AQUI VA LA SOLUCIÓN AL PROBLEMA PLANTEADO.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub cargos_metod_AfterUpdate()
For i = 0 To Me.cargos_metod.ListCount - 1
If Me.cargos_metod.Selected(i) = True Then
If Me.cargos_metod.ItemData(i) = 2 Then              'Posición en la lista
Me.prof_princ_año.Enabled = True
ElseIf Me.cargos_metod.ItemData(i) = 3 Then       'Posición en la lista
Me.disciplina.Enabled = True
ElseIf Me.cargos_metod.ItemData(i) = 4 Then       'Posición en la lista
Me.Coord_ce.Enabled = True
End If
Else
If Me.cargos_metod.ItemData(i) = 2 Then
Me.prof_princ_año.Enabled = False
ElseIf Me.cargos_metod.ItemData(i) = 3 Then
Me.disciplina.Enabled = False
ElseIf Me.cargos_metod.ItemData(i) = 4 Then
Me.Coord_ce.Enabled = False
End If
End If
Next i
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Manuel
Val: 362
Plata
Ha mantenido su posición en Access (en relación al último mes)
Gráfica de Access

Activar campos a partir de cuadro de lista multivalor

Publicado por Manuel (159 intervenciones) el 19/08/2020 17:33:12
Me alegro que ya te funcione, ha sido un placer. Ayer te conteste desde el móvil y entre eso y que en el día a día trabajo con varios lenguajes y entornos y cada uno distinto, pues fue culpa mía que estuviesen separados los elseif y no junto.

En cuanto a tus otros problemas, en cuanto los plantees, pues abre otro hilo y te voy ayudando, ya te digo que es fácil que habrá en el dato concreto que quieras (por ejemplo con filtros), etc. Que al estar en distintos hilos, si alguien busca en el futuro una solución así, pues le será más fácil y no se preguntará lo mismo una y otra vez.

hasta luego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar