** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Access y VBA > Access y VBA
  Mensajes nuevos Mensajes nuevos RSS - Subform con checklist
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoSubform con checklist

 Responder Responder Página  12>
Autor
Mensaje
developme3 Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Diciembre/2017
Localización: españa
Estado: Sin conexión
Puntos: 66
Enlace directo a este mensaje Tema: Subform con checklist
    Enviado: 15/Febrero/2018 a las 09:35
Hola a todos, tengo una aplicación con datos de trabajadores y datos de formación que ha realizado. en el form de trabajadores tengo un subform que voy añadiendo los cursos que tengo creados línea a línea, es decir un trabajador ha hecho 2 cursos de los 40 que puede dar pues le meto esos 2 cursos. pero ahora mi cliente me dice que quiere que en ese subform me aparezcan los 40 cursos con un checklist y que yo pueda marcar los que ha dado, pero que vea todos, en el mismo subform. ¿como puedo hacer esto? porque en el anterior en la tabla que me guardaba los cursos realizados por trabajador un campo guardaba el trabajador y otro el curso, si solo tenía 2 cursos pues solo había 2 registros ¿pero con esto como se puede hacer? Gracias.
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6162
Enlace directo a este mensaje Enviado: 15/Febrero/2018 a las 10:12
Hola!

Podrías poner los campos de ambas tablas y como están relacionadas?
Un Saludo.
Arriba
developme3 Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Diciembre/2017
Localización: españa
Estado: Sin conexión
Puntos: 66
Enlace directo a este mensaje Enviado: 15/Febrero/2018 a las 10:19
Hola Mounir, las tablas serían así:
Trabajadores
     ID
     Nombre

Cursos
    ID
    NombreCurso

FormacionRealizada
    TrabajadorID
    CursoID
    Realizado SI/NO
    
Pero como tienen que aparecer todos los cursos mi duda es ¿como me aparecen todos los cursos en la ficha de un trabajador? porque antes lo metía uno a uno, pero ahora me salen todos, y si un día añador un curso nuevo pues debería de aparecer en la lista, y si borro un curso debería de desaparecer.
Lo único que se me ocurre es crear código que añada los cursos y así poder marcar el checklist pero no se si hay una forma automática y así no estar pendiente de si se olvida meter un curso, borrarlo, etc.
Gracias. 
Arriba
mounir Ver desplegable
Colaborador
Colaborador


Unido: 09/Febrero/2009
Localización: Asturias-España
Estado: Sin conexión
Puntos: 6162
Enlace directo a este mensaje Enviado: 15/Febrero/2018 a las 10:33
Hola!

Hay varias opciones, pero lo más práctico es reducir la tablas a dos, es decir, eliminaría la tabla curso y me quedarían dos tablas:

Trabajadores
     
     ID
     Nombre

FormacionRealizada
    
    Id_formación

    TrabajadorID

    NombreCurso

    Realizado SI/NO

luego con el asistente de formularios creas un formulario y subformulario en vista formulario continuo o vista hoja de datos relacionados por l campo ID de la tabla (Trabajadores) y el campo TrabajadorID de la otra tabla.

Un Saludo.
Arriba
developme3 Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Diciembre/2017
Localización: españa
Estado: Sin conexión
Puntos: 66
Enlace directo a este mensaje Enviado: 15/Febrero/2018 a las 17:45
Hola Mounir, pero hay casi 200 trabajadores, habría que meter los 40 cursos a mano en esa tabla...croe que sería muy costoso.
Arriba
pitxiku Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 27/Septiembre/2017
Localización: En mi casa
Estado: Sin conexión
Puntos: 1276
Enlace directo a este mensaje Enviado: 15/Febrero/2018 a las 20:20
¿Y si cada vez que creas/borras un registro en las tablas de trabajadores o cursos, actualizas la tabla de formaciones realizadas?

Según qué versión de Access tengas, puedes usar los eventos de tabla para actualizar la tabla.
Arriba
developme3 Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Diciembre/2017
Localización: españa
Estado: Sin conexión
Puntos: 66
Enlace directo a este mensaje Enviado: 16/Febrero/2018 a las 13:18
Tengo access 2010. La verdad es que no conozco los eventos de tablas y no se si se pueden enlazar a código para revisar si hay cursos nuevos que añada la línea oportuna relacionada con el trabajador. Lo mismo sería que cuando haya un trabajador nuevo que le anexe todos los cursos para que los pueda marcar. Si alguien tiene mas idea que yo sobre esto....
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 12529
Enlace directo a este mensaje Enviado: 16/Febrero/2018 a las 15:09
Caminos hay, ... en informática siempre existe otro camino .... LOL

A mi se me ocurren dos maneras básicas de hacerlo:

*** Con el subformulario y los campos check
- habría que crearse una tabla auxiliar con el id de curso, un campo Si/No para el check y en un momento dado también el nombre del curso
- al entrar en el subformulario (o nuevo registro, o dónde cuadre) cargas los datos en la tabla con el campo Si/No a No y lees de la tabla dónde guardas los cursos por empleado y marcas los registros a Si (tu diseño de la tabla de un registro por cada empleado/curso es correcto)
- muestras los datos
- permites el cambio en los checklist
- al salir del subformulario tendrás que hacer dos tareas:
  - borrar los cursos que ya no tengan el checklist a true
  - dar de alta los que si lo tengan
  - yo directamente borraría los que tenga el empleado y pasaría a darlos de alta

*** Con un cuadro de lista con selección múltiple
- consiste en cargar el cuadro de lista con la tabla de cursos
- marcas como seleccionados los cursos que el empleado tenga
- permites la modificación
- al salir del mismo los mismos procesos que en el caso anterior
  - borrar los que no y dar de alta los que si


Tiene su aquél, no recomendado para Newbies ... Unhappy

Yo haría el segundo.

Seguro que hay más formas.

Un saludo.


Editado por Mihura - 16/Febrero/2018 a las 15:10
Jesús Mansilla Castells.
Saludos desde Móstoles.

Access Aplicaciones
Tecsys.es
Arriba
arcangelcaos Ver desplegable
Asiduo
Asiduo
Avatar

Unido: 15/Noviembre/2012
Localización: España
Estado: Sin conexión
Puntos: 245
Enlace directo a este mensaje Enviado: 16/Febrero/2018 a las 19:23
Hay otra opcion que yo uso, y es
LOS CAMPO MULTIVALOR

Yo he aprendido recientemente a usarlo y para cosas de ese estilo van muy bien.
El problema viene luego a la hora de sacar informes y filtrarlos, que son mas complicados que los campos normales, hay que manejar mas codigo, pero para seleccionar varias cosas viene de puta madre.

Te explico rapido.

En una tabla, en diseño, le dices que ese campo es multivalor. La guardas
Luego en el formulario, crear un cuadro de lista con origen de control ese campo de esa tabla.
Tienes que tener una tabla con todos los cursos posibles que halla.
Luego en el origen de la fila de ese cuadro de lista, le indicas la tabla de los cursos, y le das un poquito de formato, y listo. Te deja marcar varios a la vez y se guardan. Queda muy chulo, por lo menos para mi.
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 12529
Enlace directo a este mensaje Enviado: 16/Febrero/2018 a las 20:30
Deja que te de mi opinión personal sobre los campos multivalor ...

¡¡ Son peor que un dolor de muelas !!  Ouch


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

Access Aplicaciones
Tecsys.es
Arriba
01loko Ver desplegable
Colaborador
Colaborador


Unido: 17/Agosto/2017
Localización: Santander
Estado: Sin conexión
Puntos: 762
Enlace directo a este mensaje Enviado: 17/Febrero/2018 a las 11:55
jijijijij ( pienso igual)

solo funcionan con formularios y dan mas dolores de cabeza que beneficios
Recordar de que soy nuevo y estoy aprendiendo.
Arriba
qwer92 Ver desplegable
Habitual
Habitual
Avatar

Unido: 10/Noviembre/2011
Localización: Barcelona
Estado: Sin conexión
Puntos: 131
Enlace directo a este mensaje Enviado: 20/Febrero/2018 a las 11:57
Aporto otro sistema, que dependiendo de si hay muchos elementos en las listas puede ser más sencillo visualmente:
Tener 2 listas, una para elementos seleccionados y otra para los restantes, con botones para mover elementos de una lista a otra.
De esta manera es fácil distinguir los elementos seleccionados, son los que aparecen en la 1ª lista.


Editado por qwer92 - 20/Febrero/2018 a las 11:58
Arriba
Mihura Ver desplegable
Administrador
Administrador
Avatar

Unido: 06/Mayo/2005
Localización: En la dehesa
Estado: Sin conexión
Puntos: 12529
Enlace directo a este mensaje Enviado: 20/Febrero/2018 a las 12:38
qwer92,

Yo lo haría como propones (con dos listas) ... pero parece que lo quieren en una sola (realmente en un subformulario).

Por cierto, yo me plantearía el evento doble click de la lista para pasar de una a otra.


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

Access Aplicaciones
Tecsys.es
Arriba
MexMan70 Ver desplegable
Colaborador
Colaborador


Unido: 17/Julio/2007
Localización: DarkSide
Estado: Sin conexión
Puntos: 9235
Enlace directo a este mensaje Enviado: 20/Febrero/2018 a las 16:03
También existe una forma mas ... (perversa?, jijiji...) larga ? por así decirlo. Crear cada vez que se de de alta todos los registros de los cursos y así poder usarlos en el subformulario.

Para actualizar los registros que tienes actualmente tendrías que lanzar una consulta de datos anexados para agregar los que te faltan (que esto solo lo harías una sola vez).

En los informes y demás objetos puedes mostrar solamente los que tiene marcados como activos (true).

Esto no es buena praxis porque por cada empleado tendría sus 40 registros/cursos (200x40=8,000 registros !) pero es una solución sencilla para un novel.

La mejor practica es solo tener los registros de cada curso activo y unir los que no lo están. Para ello tendrías que leer mas acerca de los tipos de consulta y manejar un poco mas Access como te lo ha apuntado Mihura.

Saludos !
OneDrive: http://sdrv.ms/Vk6eJd
Arriba
developme3 Ver desplegable
Habitual
Habitual
Avatar

Unido: 26/Diciembre/2017
Localización: españa
Estado: Sin conexión
Puntos: 66
Enlace directo a este mensaje Enviado: 21/Febrero/2018 a las 09:42
Hola al final he hecho lo que me dice MexMan70, cada vez que añado un curso lo añado a cada trabajador para que el usuario pueda hacer check en él. Lo hago todo con código. Lleva mucho trabajo de comprobar, añadir, etc pero funciona bien. Es que el cliente lo quiere así. Lo de tener en la tabla solo los curso marcados sería lo ideal pero no he podido hacerlo. Gracias por la ayuda.
Podéis cerrar el hilo. 
Arriba
 Responder Responder Página  12>
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable