[RESUELTO]Listas Desplegables condicionadas a otro campo
[RESUELTO]Listas Desplegables condicionadas a otro campo
Para empezar tengo tres tablas
Lugares : ID_Lugares, Lugares.
Horarios: ID_Horarios, horarios.
Turnos: ID_Turnos, Turnos
Necesitaría elegir de la lista desplegable de "lugares" uno de ellos, pero luego al elegir en el campo de "Horarios", me vendría de perlas que sólo se desplegaran los horaios correspondientes a ese lugar y no el de los otros, aunque algunos horarios son los mismos en diferentes lugares y otros diefieren- esto es, en dos lugares dieferentes coinciden dos horarios pero otros dos horarios de esos mismos lugares difieren en cuarto de hora - . De la misma manera ese horario y ese lugar determinarían la letra del turno que correspodiera a esa combinación.
No se si se podrá hacer, ya que si no es posible estaría resuelto, pero si se puede, necesitaría una orientación al respecto.
Gracias por vuestro tiempo y conocimiento.
Lugares : ID_Lugares, Lugares.
Horarios: ID_Horarios, horarios.
Turnos: ID_Turnos, Turnos
Necesitaría elegir de la lista desplegable de "lugares" uno de ellos, pero luego al elegir en el campo de "Horarios", me vendría de perlas que sólo se desplegaran los horaios correspondientes a ese lugar y no el de los otros, aunque algunos horarios son los mismos en diferentes lugares y otros diefieren- esto es, en dos lugares dieferentes coinciden dos horarios pero otros dos horarios de esos mismos lugares difieren en cuarto de hora - . De la misma manera ese horario y ese lugar determinarían la letra del turno que correspodiera a esa combinación.
No se si se podrá hacer, ya que si no es posible estaría resuelto, pero si se puede, necesitaría una orientación al respecto.
Gracias por vuestro tiempo y conocimiento.
Última edición por JesúsMi el Vie Abr 16, 2010 9:26 am, editado 2 veces en total.
linuxMint 19 Tara y w7 prof
Re: Listas Desplegables condicionadas a otro campo
Lo que hice fue vincular los turnos con lugares y horarios.
Un turno queda como una pareja lugar-horario y un texto para diferenciar los turnos (A,B,C...)
En el formulario de definiciones puedes manejar lugares, horarios y turnos.
Puedes diseñar otros formularios de entrada a tu gusto para esta tarea.
En el formulario de empleados, el campo "lugar" no tiene ningún misterio. Es un listbox corriente y moliente.
La parte interesante son las macros.
Al elegir un lugar (o al cambiar de empleado), se actualiza el desplegable de turnos.
Un turno queda como una pareja lugar-horario y un texto para diferenciar los turnos (A,B,C...)
En el formulario de definiciones puedes manejar lugares, horarios y turnos.
Puedes diseñar otros formularios de entrada a tu gusto para esta tarea.
En el formulario de empleados, el campo "lugar" no tiene ningún misterio. Es un listbox corriente y moliente.
La parte interesante son las macros.
Al elegir un lugar (o al cambiar de empleado), se actualiza el desplegable de turnos.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
Re: Listas Desplegables condicionadas a otro campo
Hola de nuevo, he intentado replicar la propuesta, pero no lo consigo.
He adapatado las tablas a la siguiente forma:
HORSALUD: ID_HOR, HORARIOS.
LUGARES2: ID_LUGAR, LUGARES.
TURNOS: ID_TUR, ID_LUGAR, ID_HOR, TURNO
He vinculado: HORSALUD.ID_HOR con TURNOS.ID_HORARIOS. y LUGARES2.ID_LUGAR con TURNOS.ID_LUGAR.
En el formulario, he puesto una lista desplegable de la tabla: LUGARES2, y otra lista desplegable de la tabla turnos, pero no se donde ni como asignarla para que se despliegue exclusivamente los horarios correspondientes al lugar elegido en el anterior desplegable ( el correspondiente al de la tabal:LUGARES2). Para ello creí entender que se lograba asignando al formulario un a Macro. Esta Macro la he intentado replicarla adapatandola de la que me envío Cascabel, pero no lo consigo. Esta Macro modificada os la dejo en un archivo adjunto, ya que no se me deja adjuntar toda la base de datos para que la analizaseis. Espero que se entienda.
Gracias por todo.
He adapatado las tablas a la siguiente forma:
HORSALUD: ID_HOR, HORARIOS.
LUGARES2: ID_LUGAR, LUGARES.
TURNOS: ID_TUR, ID_LUGAR, ID_HOR, TURNO
He vinculado: HORSALUD.ID_HOR con TURNOS.ID_HORARIOS. y LUGARES2.ID_LUGAR con TURNOS.ID_LUGAR.
En el formulario, he puesto una lista desplegable de la tabla: LUGARES2, y otra lista desplegable de la tabla turnos, pero no se donde ni como asignarla para que se despliegue exclusivamente los horarios correspondientes al lugar elegido en el anterior desplegable ( el correspondiente al de la tabal:LUGARES2). Para ello creí entender que se lograba asignando al formulario un a Macro. Esta Macro la he intentado replicarla adapatandola de la que me envío Cascabel, pero no lo consigo. Esta Macro modificada os la dejo en un archivo adjunto, ya que no se me deja adjuntar toda la base de datos para que la analizaseis. Espero que se entienda.
Gracias por todo.
- Adjuntos
-
- MACRO DE CONDICIÓN DE SELECCIÓN.doc
- (12 KiB) Descargado 967 veces
linuxMint 19 Tara y w7 prof
Re: Listas Desplegables condicionadas a otro campo
Puedes adjuntar el archivo de la base de datos, pero no en formato ODB. Comprímela a ZIP (o a 7Z). Antes, elimina todo lo que no interese para el problema.
Veo bien adaptada la macro, salvo que si en la tabla de turnos el campo se llama "TURNO" (sin ese), en la consulta debe ser lo mismo: SELECT 'Turno '||T.""TURNO"" (también sin ese).
Llamé sAlCambiarEmpleado() a la macro porque va asignada al evento "Tras el cambio de registro de datos" del formulario principal (el de empleados). Esto es así para que se actualice el desplegable de turnos al cambiar de empleado (de lo contrario, retenía la lista de turnos correspondiente al lugar del anterior registro de empleado).
También se asocia la macro sRefrescaListaTurnos() al evento "Estado modificado" del deplegable de lugares. Cuando se elige un lugar, dicha macro cambia el foco a otro control y hace una pausa de 0 milisegundos. Esto permite que el cambio se haga efectivo en el origen de datos (los listbox tienen ese problema de tiempo). Luego, asegurados ya de que el valor correcto está almacenado, invoca la otra macro para que actualice el desplegable de turnos en función del lugar.
La macro sRefrescaCamposTabla() es utilizada sólo en el formulario de definiciones (lugares/horarios/turnos) y lo que hace es refrescar todo listbox que encuentre en el formulario. Edito: ¿Adaptaste también este formulario? Tiene varias columnas listbox en el control de tabla de abajo a las que habría que retocar el SQL.
Sí que es un poco lioso, ahora que lo miro.
Veo bien adaptada la macro, salvo que si en la tabla de turnos el campo se llama "TURNO" (sin ese), en la consulta debe ser lo mismo: SELECT 'Turno '||T.""TURNO"" (también sin ese).
Llamé sAlCambiarEmpleado() a la macro porque va asignada al evento "Tras el cambio de registro de datos" del formulario principal (el de empleados). Esto es así para que se actualice el desplegable de turnos al cambiar de empleado (de lo contrario, retenía la lista de turnos correspondiente al lugar del anterior registro de empleado).
También se asocia la macro sRefrescaListaTurnos() al evento "Estado modificado" del deplegable de lugares. Cuando se elige un lugar, dicha macro cambia el foco a otro control y hace una pausa de 0 milisegundos. Esto permite que el cambio se haga efectivo en el origen de datos (los listbox tienen ese problema de tiempo). Luego, asegurados ya de que el valor correcto está almacenado, invoca la otra macro para que actualice el desplegable de turnos en función del lugar.
La macro sRefrescaCamposTabla() es utilizada sólo en el formulario de definiciones (lugares/horarios/turnos) y lo que hace es refrescar todo listbox que encuentre en el formulario. Edito: ¿Adaptaste también este formulario? Tiene varias columnas listbox en el control de tabla de abajo a las que habría que retocar el SQL.
Sí que es un poco lioso, ahora que lo miro.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
Re: Listas Desplegables condicionadas a otro campo
He intentado llevar a cabo las indicaciones peo sigue sin funcionar.
Al ver que una de las macros era a signada al formulario principal, he optado por hacerlo en el que utilizaría definitivamente, el cual ha cambiado pero sustancialmente es el mismo problema que me trae de cabeza.
He adjuntado el archivo de la BD y sus Formularios para ver si el problema se puede analizar para su resolución.
Muchas Gracias.
Al ver que una de las macros era a signada al formulario principal, he optado por hacerlo en el que utilizaría definitivamente, el cual ha cambiado pero sustancialmente es el mismo problema que me trae de cabeza.
He adjuntado el archivo de la BD y sus Formularios para ver si el problema se puede analizar para su resolución.
Muchas Gracias.
linuxMint 19 Tara y w7 prof
Re: Listas Desplegables condicionadas a otro campo
Hay un espacio que borrar al final del nombre de la tabla "HORSALUD ". (¡Casi me ha vuelto loco!)
En el formulario "definiciones", al SQL de las columnas de "LUGAR" y "HORARIOS" le falta una segunda columna con la ID.
En el formulario "REGISTRO GENERAL 2010-2011" los controles deben enlazarse a los campos siguientes:
ListBox3 "BARRIO SALUD" ID_LUGAR
ListBox6 "HORARIO SALUD" ID_TUR
Deberías borrar los campos "Bo SALUD" y "HOR.SALUD" de la tabla "AULAS BETA", ya que no se usan.
Convendría definir las relaciones entre la tabla "AULAS BETA" y las otras dos.
Como norma, evita usar ese tipo de nombres (con puntos, espacios y caracteres especiales) en los nombres de formularios, tablas, etc. He tenido que cambiar el nombre al formulario.
Tus controles se llaman "ListBox3"/"ListBox6" y no "lbLugar"/"lbTurno". Los cambié en las macros.
Hay que ordenar el SQL de la macro por "TURNO" y no por "TURNOS".
Te devuelvo el archivo corregido para que sigas trabajando.
En el formulario "definiciones", al SQL de las columnas de "LUGAR" y "HORARIOS" le falta una segunda columna con la ID.
En el formulario "REGISTRO GENERAL 2010-2011" los controles deben enlazarse a los campos siguientes:
ListBox3 "BARRIO SALUD" ID_LUGAR
ListBox6 "HORARIO SALUD" ID_TUR
Deberías borrar los campos "Bo SALUD" y "HOR.SALUD" de la tabla "AULAS BETA", ya que no se usan.
Convendría definir las relaciones entre la tabla "AULAS BETA" y las otras dos.
Como norma, evita usar ese tipo de nombres (con puntos, espacios y caracteres especiales) en los nombres de formularios, tablas, etc. He tenido que cambiar el nombre al formulario.
Tus controles se llaman "ListBox3"/"ListBox6" y no "lbLugar"/"lbTurno". Los cambié en las macros.
Hay que ordenar el SQL de la macro por "TURNO" y no por "TURNOS".
Te devuelvo el archivo corregido para que sigas trabajando.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
Re: [RESUELTO]Listas Desplegables condicionadas a otro campo
Buenas tardes,
Escribo en este hilo porque he intentado adaptar la macro que nos facilita Cascabel pero debe de haber algo que hago mal (lo siento, es la primera vez que veo una macro "por dentro") y no consigo hacer que funcione.
Si le podeis echar un ojo y me comentais el porque del error y, si puede ser, la posible solución os lo agradeceria mucho.
P.D.: Mauricio, ya me he mirado tu libro y sigo sin saber el porque del problema...
Escribo en este hilo porque he intentado adaptar la macro que nos facilita Cascabel pero debe de haber algo que hago mal (lo siento, es la primera vez que veo una macro "por dentro") y no consigo hacer que funcione.
Si le podeis echar un ojo y me comentais el porque del error y, si puede ser, la posible solución os lo agradeceria mucho.
P.D.: Mauricio, ya me he mirado tu libro y sigo sin saber el porque del problema...
- Adjuntos
-
- MANTENIMIENTO FORO.7z
- Formulario "Tareas realizadas", Campo "Componente"
- (109.77 KiB) Descargado 404 veces
AOO 3.4.1 en Windows XP
Re: [RESUELTO]Listas Desplegables condicionadas a otro campo
Creo que esto iría en un hilo nuevo.
Lo primero que veo es que el formulario no permitía modificar datos. ¿A qué se debe eso? Lo tuve que cambiar para poder hacer algo.
También tuve que corregir la sentencia:
Atención a las mayúsculas/minúsculas en los nombres de los campos. Es sensible a la diferencia. Además, faltaba "Componentes" AS C para que tuviera sentido el resto. El segundo campo debe ser la ID y tenías el texto.
Por otra parte, llamabas a la macro sFiltraPorComponente cuando debes llamar a sRefrescaListaEquipo.
Por cierto, tuve que reconstruir el archivo desde 0 porque después de borrar todas las macros, Base me seguía avisando de que el archivo contenía macros. Vigila que no tengas un virus de macros, aunque podría ser simplemente un error de Base.
Lo primero que veo es que el formulario no permitía modificar datos. ¿A qué se debe eso? Lo tuve que cambiar para poder hacer algo.
También tuve que corregir la sentencia:
Código: Seleccionar todo
sSQL(0)="SELECT 'Componente ' || C.""Componente"", C.""Id_componente"" FROM ""Componentes"" AS C WHERE C.""Equipo""=" & vComponente & " ORDER BY C.""Componente"" ASC"
Por otra parte, llamabas a la macro sFiltraPorComponente cuando debes llamar a sRefrescaListaEquipo.
Por cierto, tuve que reconstruir el archivo desde 0 porque después de borrar todas las macros, Base me seguía avisando de que el archivo contenía macros. Vigila que no tengas un virus de macros, aunque podría ser simplemente un error de Base.
OOo 3.3.0: OOO330m20 (Build:9567) en WXP+SP3 y en Ubuntu 10.10
Re: [RESUELTO]Listas Desplegables condicionadas a otro campo
Gracias Cascabel!! La setencia me funciona!!
Alomejor el formulario no te dejaba modificar datos porque así se lo tengo ordenado en las propiedades.
Y para dejar la base sin macros yo lo que hago es borrar la biblioteca donde las tengo y al reabrir el archivo no me sale ningún aviso
Nuevamente gracias
P.D.: Para la próxima abro un nuevo hilo
Alomejor el formulario no te dejaba modificar datos porque así se lo tengo ordenado en las propiedades.
Y para dejar la base sin macros yo lo que hago es borrar la biblioteca donde las tengo y al reabrir el archivo no me sale ningún aviso
Nuevamente gracias
P.D.: Para la próxima abro un nuevo hilo
AOO 3.4.1 en Windows XP