´Cómo manejo Cuadros de lista múltiples

Tengo una BD en access,
En ella almaceno una tabla llamada reuniones, la cual contiene nO_reunion, fecha, nombre_de_reunion y clave_empleado; tengo otra tabla donde manejo datos de empleados:
La cual contiene clave_empleado y nombre.
El asunto es que la empresa hace reuniones a las cuales invita a los empleados, entonces doy de alta la reunión y le asigno los empleado que va a ir. La pregunta es cómo le puedo hacer para que al dar de alta una reunión y teniendo un "cuadro de lista de selección múltiple" con todos los empleado, seleccione yo a los empleados que va a ir a tal reunión, e decir cuando los selecciones en el cuadro de lista la se sepa que son para la reunión en turno, me puedes decir algún método o código:

1 Respuesta

Respuesta
1
La verdad exactamente de la forma en que lo preguntas no se como se hace, pero te puedo dar otra solución que te funciona muy similar:
Modifica la tabla empleados y añádele un campo que vas a llamar "Incluir" o algo similar, como tipo de datos escoge "Si/No" no le modifiques el formato de datos, luego crea un formulario nuevo a partir de la tabla de empleados, utiliza el asistente y cuando te pregunte que distribución le quieres dar escoge "Tabular".
Cuando termines, ingresas al diseño del formulario y creas un campo de texto nuevo (colocalo en el encabezado del formulario o en algún otro encabezado), das doble clic sobre el nuevo campo de texto y aparece la ventana de propiedades, allí ingresas a la ficha "Otras" y la primera opción debe ser "Nombre" allí cambias lo que aparezca y colocas "Reunion". También debes crear un botón, si te sale el asistente cancélalo
(Crealo en el encabezado). Das doble clic sobre el botón y haces lo mismo que con el cuadro de texto y le pones como nombre "Aceptar", luego con el mismo botón seleccionado entras a la ficha "Eventos" y escoges "Al hacer clic" tras lo cual aparece una ventana con tres opciones donde escoges "generador código" y aceptar.
Esto te lleva a una ventana de Visual Basic donde debe quedar lo siguiente:
Option Compare Database
Private Sub Aceptar_Click()
Dim NoReunion, Sql
If IsNull(Me.Reunion) = True Then
MsgBox ("Debe especificar el número de reunión")
Exit Sub
End If
NoReunion = Me.Reunion
Sql = "INSERT INTO Reuniones ( IdEmpleado, No_Reunion ) " _
& "SELECT Empleados.IdEmpleado, " & NoReunion & " AS Expr1 " _
& "FROM Empleados WHERE (((Empleados.Incluir)=True));"
DoCmd.RunSQL Sql
End Sub
Private Sub Form_Close()
Dim Sql
Sql = "UPDATE Empleados SET Empleados.Incluir = False;"
DoCmd.RunSQL
End Sub
Lo anterior lo que hace es que cuando das clic en el botón, inserta los IdEmpleado que seleccionaste en la columna "Incluir" junto con el No de reunión que especificaste en el campo de texto "Reunion"
Si quieres incluir de una vez los campos fecha y nombre de reunión, los creas de la misma forma que reunión en el formulario y los agregas en la instrucción sql de manera que queda más o menos así:
Private Sub Aceptar_Click()
Dim NoReunion, SQL, Fecha, Nombre
If IsNull(Me.Reunion) = True Then
MsgBox ("Debe especificar el número de reunión")
Exit Sub
End If
NoReunion = Me.Reunion
Fecha = Me.Fecha
Nombre = Me.NombreReunion
SQL = "INSERT INTO Reuniones ( IdEmpleado, Fecha, Nombre_Reunion, No_Reunion ) " _
& "SELECT Empleados.IdEmpleado, #" & Fecha & "# AS Expr1, '" & Nombre & "' AS Expr2, " & Reunion & " AS Expre3 " _
& "FROM Empleados " _
& "WHERE (((Empleados.Incluir)=True));"
DoCmd.RunSQL SQL
End Sub
Consideraciones generales
1. En esta parte:
SQL = "INSERT INTO Reuniones ( IdEmpleado, Fecha, Nombre_Reunion, No_Reunion ) " _
& "SELECT Empleados.IdEmpleado, #" & Fecha & "# AS Expr1, '" & Nombre & "' AS Expr2, " & Reunion & " AS Expre3 " _
& "FROM Empleados " _
& "WHERE (((Empleados.Incluir)=True));"
Deberás cambiar los nombres de las tablas (Lo que va a la izquierda del punto y después de "from") por los nombres exactamente como los tienes en la base
2. Los nombres de los campos que están en paréntesis y a la derecha del punto también debes cambiarlos y dejarlos tal cual estén en las tablas.
Ej empleados. IdEmpleado
La tabla es empleados y el campo IdEmpleado
3. El campo Fecha es de tipo fecha por eso lleva # antes y después.
4. El campo No_Reunion es numérico.
La última parte:
Private Sub Form_Close()
Dim Sql
Sql = "UPDATE Empleados SET Empleados.Incluir = False;"
DoCmd.RunSQL
End Sub
Lo que hace es dejar a todos los empleados con valor "Falso" en el campo "Incluir" cuando cierras el formulario, para que la próxima vez que lo abras, puedas empezar con esa columna "limpia".
Bueno creo que eso es todo, espero que te sirva, si no te funciona algo me vuelves a preguntar.
Gajimenb
En la última parte
Private Sub Form_Close()
Dim Sql
Sql = "UPDATE Empleados SET Empleados.Incluir = False;"
DoCmd.RunSQL
End Sub
dejala así:
Private Sub Form_Close()
Dim Sql
Sql = "UPDATE Empleados SET Empleados.Incluir = False;"
DoCmd.RunSQL sql
End Sub
Gajimenb

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas