listas en cascadas
Reglas del Foro
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
Los moderadores podrían mover los temas creados aquí a un foro más apropiado.
Si usted publicó aquí y no encuentra el tema, puede buscar sus mensajes haciendo clic en la opción «Buscar sus mensajes» que se encuentra justo debajo de la cabecera de la página, junto al panel de control de usuario y al acceso a sus mensajes privados.
listas en cascadas
Buenas tardes amigos, tengo un problema: les comento, tengo dos (2) tablas
1.- Primera tabla: nombre_usuario;
Esta posee dos (2) campos: numero_identificacion y nombre
2.- Segunda tabla: tipo_automovil
Esta posee dos (2) campos: tipo_automovil y numero_identificacion
primero relacione estas dos tablas con numero_identificacion, esto por que una misma persona puede tener mas de un automóvil. Ahora bien lo que quiero hacer es que en un formulario de búsqueda rápida, tenga dos comandos de listas; el primero para escoger el numero_identificacion (de alguna persona) y en el segundo comando de lista, solo se me desplieguen los automóviles que pertenezcan a la persona elegida en el primer comando de lista.
De ante manos les agradezco.
1.- Primera tabla: nombre_usuario;
Esta posee dos (2) campos: numero_identificacion y nombre
2.- Segunda tabla: tipo_automovil
Esta posee dos (2) campos: tipo_automovil y numero_identificacion
primero relacione estas dos tablas con numero_identificacion, esto por que una misma persona puede tener mas de un automóvil. Ahora bien lo que quiero hacer es que en un formulario de búsqueda rápida, tenga dos comandos de listas; el primero para escoger el numero_identificacion (de alguna persona) y en el segundo comando de lista, solo se me desplieguen los automóviles que pertenezcan a la persona elegida en el primer comando de lista.
De ante manos les agradezco.
OpenOffice 2.4 en canaima
Re: listas en cascadas
Hola,
Creo que no te hacen falta dos buscadores, con uno para el usuario es suficiente. Si tienes un formulario principal con los usuarios y un subformulario con los vehiculos del usuario, cuando hagas un filtro por usuario en el principal, o cambies de registro de un usuario a otro, el subformulario te mostrara los vehiculos del mismo.
Saludos
Creo que no te hacen falta dos buscadores, con uno para el usuario es suficiente. Si tienes un formulario principal con los usuarios y un subformulario con los vehiculos del usuario, cuando hagas un filtro por usuario en el principal, o cambies de registro de un usuario a otro, el subformulario te mostrara los vehiculos del mismo.
Saludos
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: listas en cascadas
Tienes razon Sir. RMG, se me paso explicar el por que? necesariamente tiene que ser en dos comandos de listas, esto se debe por que en el segundo comandos de listas (automóviles que pertenezcan a la persona elegida en el primer comando de lista) se le va a agregar (las veces que ocurra una infraccion) una penalizacion.
OpenOffice 2.4 en canaima
Re: listas en cascadas
Hola,
Lo siento, pero no te acabo de entender, puedes anexar el archivo con lo que quieres hacer.
Saludos
Lo siento, pero no te acabo de entender, puedes anexar el archivo con lo que quieres hacer.
Saludos
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: listas en cascadas
Saludos RMG, adjunto envío el programa que estoy iniciando, fíjate que existen tres formularios: 1.- Para ingresar a las personas. 2.- Para asociar los automóviles a las personas ya existente en la base. y 3.- Para asociar las infracciones a los automóviles, en este ultimo formulario es que se me esta presentando el problema, debido a que lo que quiero hacer es que al seleccionar, en el primer cuadro de lista, el nombre de la persona, en el segundo cuadro de lista solo se me desplieguen los automóviles que pertenezcan a la persona seleccionada, para luego seleccionar solo el automóvil que tubo la infracción para asociarle su debida multa (infracción).
- Adjuntos
-
- Infraccion.zip
- (14.45 KiB) Descargado 342 veces
OpenOffice 2.4 en canaima
Re: listas en cascadas
Hola,
Te adjunto el archivo con un ejemplo de como lo enfocaria, esta todo en el formulario1. Esta con controles tablas para que lo veas mejor, despues tu te lo diseñas como te guste. Si te das cuenta en la consulta1 que he creado no hace falta rellenar los campos nombre y auto de la tabla infracciones, los puedes obtener con las otra tablas. Si aun asi quieres poner esos campos en la control tabla infracciones del formulario, muestras las columnas que he ocultado y podrás hacerlo.
Saludos
Te adjunto el archivo con un ejemplo de como lo enfocaria, esta todo en el formulario1. Esta con controles tablas para que lo veas mejor, despues tu te lo diseñas como te guste. Si te das cuenta en la consulta1 que he creado no hace falta rellenar los campos nombre y auto de la tabla infracciones, los puedes obtener con las otra tablas. Si aun asi quieres poner esos campos en la control tabla infracciones del formulario, muestras las columnas que he ocultado y podrás hacerlo.
Saludos
- Adjuntos
-
- Infracciones1.rar
- (21.05 KiB) Descargado 335 veces
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: listas en cascadas
Saludos Sir. RMG, observe el ejemplo a seguir que me enviaste, por hay va la cosa, pero rompe la forma del resto del programa, seria bueno seguir una linea, me explico, se quiere hacer todo en forma de cascada usando cuadro de listas,
OpenOffice 2.4 en canaima
Re: listas en cascadas
Hola,
Pues mucho me temo que como no uses macros lo puedas conseguir. No se como estarás en esta materia, pero aqui te dejo un enlace por si lo desconoces.
http://user.services.openoffice.org/es/ ... 1545#p4404
Saludos
Pues mucho me temo que como no uses macros lo puedas conseguir. No se como estarás en esta materia, pero aqui te dejo un enlace por si lo desconoces.
http://user.services.openoffice.org/es/ ... 1545#p4404
Saludos
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: listas en cascadas
Advierto
que de Base (como de otras cosas) sé bien poco; pero en este hilo se habla de establecer como origen del registro el resultado de una consulta filtrada por el valor del ListBox del formulario.
Me pregunto si no podría adaptarse a la manera/sintaxis del SQL de Base, algo del estilo de esto
P.D.: Seguro que no he entendido bien, pero creo que el orden de introducción de datos más adecuado en ingreso_infracción sería
hubiera adjudicado uno como principal y otro más como "usuario_real" pero ese es otro tema)

Me pregunto si no podría adaptarse a la manera/sintaxis del SQL de Base, algo del estilo de esto
Código: Seleccionar todo
SELECT DISTINCT tipo_automovil.tipo_automovil
FROM tipo_automovil INNER JOIN nombre_usuario ON tipo_automovil.numero_identificacion = nombre_usuario.numero_identificacion
WHERE nombre_usuario.numero_identificacion=[forms]![asociar_infracciones]![ListBox]
- 1.- el-qué: infraccion
2.- a-qué: placa-matrícula

Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Re: listas en cascadas
creo que la solución esta en saber como hacer (mediante SQL) una referencia de un objeto (comando de lista) que se encuentra en un formulario (actual utilizado) esto en Oo, sucede que tengo formas de hacerlo pero en Access y no he logrado adaptarme a Oo.
OpenOffice 2.4 en canaima
Re: listas en cascadas
En el libro de Mauricio Aprendiendo OOo Basic, capitulo 7.8 explica código sobre ListBox. Tal vez te ayude.
Todo es mejorable, estamos dispuestos a mejorar. ¿Yo? ... poco a poco.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Nunca hay acritud en mis comentarios, si lo pareciera, seguro que me he expresado mal.
Re: listas en cascadas
estuve observando los apuntes que me aconsejaste xiseme, pero no se hace mencion de como hacer referencia de un lisbox de un formulario para hacer una comparacion con un campo de una tabla, tal como se hacia en ACCESS. Me pregunto si no podría adaptarse a la manera/sintaxis del SQL de Base, algo del estilo de esto (como dice xiseme) SELECT DISTINCT tipo_automovil.tipo_automovil
FROM tipo_automovil INNER JOIN nombre_usuario ON tipo_automovil.numero_identificacion = nombre_usuario.numero_identificacion
WHERE nombre_usuario.numero_identificacion=[forms]![asociar_infracciones]![ListBox]
FROM tipo_automovil INNER JOIN nombre_usuario ON tipo_automovil.numero_identificacion = nombre_usuario.numero_identificacion
WHERE nombre_usuario.numero_identificacion=[forms]![asociar_infracciones]![ListBox]
OpenOffice 2.4 en canaima
Re: listas en cascadas
Hola,
Mire este otro enlace, quizás te ayude.
http://user.services.openoffice.org/es/ ... =33&t=5953
Saludos
Mire este otro enlace, quizás te ayude.
http://user.services.openoffice.org/es/ ... =33&t=5953
Saludos
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: listas en cascadas
Gracias a los que han intentado ayudarme en resolver este hilo, pero aun no he tenido éxito con lo que real mente deseo hacer. Creo que es que no me he explicado bien. Amigos real mente deseo realizar este programa en OOo base, y deseo usar dos cuadro de listas para seleccionar los datos. donde la segunda dependa directamente de la primera selección, tal como lo explique al principio del hilo.
Mucho sabría agradecer el que me pueda ayudar hacerlo, es verdad que no tengo mucho dominio en OOo Base, pero tengo la disposición de aprender, mi rama de trabajo no tiene nada que ver con programación pero he descubierto que podría facilitar me , en tiempo de repuesta, del producto final.
Mucho sabría agradecer el que me pueda ayudar hacerlo, es verdad que no tengo mucho dominio en OOo Base, pero tengo la disposición de aprender, mi rama de trabajo no tiene nada que ver con programación pero he descubierto que podría facilitar me , en tiempo de repuesta, del producto final.
OpenOffice 2.4 en canaima
Re: listas en cascadas
Hola,
Aunque parece sencillo lo que quieres hacer, realmente no es así para alguien que esta aprendiendo en Base, pues dependes tambien de como te dije de conocer el tema de las macros y los eventos dondes las debes aplicar. Por si este no es tu caso te remito a otro ejemplo para que lo traslades a tu trabajo.
http://user.services.openoffice.org/es/ ... =31&t=6201
Saludos
Aunque parece sencillo lo que quieres hacer, realmente no es así para alguien que esta aprendiendo en Base, pues dependes tambien de como te dije de conocer el tema de las macros y los eventos dondes las debes aplicar. Por si este no es tu caso te remito a otro ejemplo para que lo traslades a tu trabajo.
http://user.services.openoffice.org/es/ ... =31&t=6201
Saludos
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: listas en cascadas
Aqui tienes otro ejemplo del foro en ingles, este no necesita macros, solo una tabla especial para filtrar. Pero como te digo, no es tan facil.
Saludos
Saludos
- Adjuntos
-
- Filtrar por listas SinMacros.rar
- (87.27 KiB) Descargado 322 veces
OpenOffice 4.1.9 y LibreOffice 6.2.4.2 en W-10, y LibreOffice 4.1.6.2 en Open Suse 13.1(VirtualBox)
Re: listas en cascadas
Me parece que para lo que deseas hacer puedes basarte en el formulario EJEMPLO 1 de mi base de datos http://sites.google.com/site/fdvcreatio ... oblaciones, pero con algunas diferencias (no es que lo copies, no te valdría, sino que lo tengas como referencia).
A partir del ListBox de las Personas, se deberían cargar los Vehiculos y una vez rellenados los vehiculos, con la elección se debería Filtrar el Formulario con las Infracciones.
Todo esto habría que hacerlo con macros.
Edita el formulario EJEMPLO 1 de mi base de datos y fíjate en las propiedades del Primer ListBox, el del Pais.
Más o menos creo que esta explicado, si lo ves muy complicado puedo echarle un ratillo y adaptarlo a tu bd.
A partir del ListBox de las Personas, se deberían cargar los Vehiculos y una vez rellenados los vehiculos, con la elección se debería Filtrar el Formulario con las Infracciones.
Todo esto habría que hacerlo con macros.
Edita el formulario EJEMPLO 1 de mi base de datos y fíjate en las propiedades del Primer ListBox, el del Pais.
- Vemos, que los datos del ListBox es una consulta SQL: "SELECT "Pais", "Id" FROM "Paises""
- En información adicional he escrito: LstProvincias,Provincias,Provincia . Te explico que son
- LstProvincias es el siguiente ListBox que se rellenará
- Provincias es la tabla que deberá usar en el próximo ListBox.
- Provincia es el campo que mostrará en el siguiente ListBox.
- Estos valores los tomará la macro, fíjate en acontecimientos Modificado: Standard.Ejecutables.AutLstForm (document, Basic)
Osea, que cuando se modifique el ListBox se ejecutará la macro AutLstForm. ¿ Que hace esta macro?, mira:
Esta macro, simplemente te envía a una u otra macro dependiendo si ha sido llamada desde un ListBox o desde un Formulario. Como hemos llamado desde el ListBox, miramos en AutoLstForm_ActLstCntl:Código: Seleccionar todo
sub AutLstForm(Event as object) If event.source.ImplementationName="com.sun.star.comp.forms.ODatabaseForm" then AutLstForm_Comprueba_ListBox(Event) If event.source.ImplementationName="com.sun.star.comp.forms.OListBoxControl" then AutLstForm_ActLstCntl(Event.Source.Model) End Sub
Vemos que esta macro toma los datos introducidos en el control (informacion adicional) y los utiliza para construir la sentencia SQL para el siguiente ListBox:Código: Seleccionar todo
Private Sub AutLstForm_ActLstCntl(Control as Object, Optional Limpiar as Boolean) Dim Control2 as Object, OForm as Object Dim Argumentos() as string 'Argumentos: Control, Tabla, Campo OForm=Control.parent Argumentos=Split(Control.Tag,",") if Ubound(argumentos)<>2 then msgbox "El campo Listado no esta bien configurado, en texto adicional debe tener los siguientes datos ""Control siguiente,Tabla,Campo"" ",64,"Error" else Control2=oForm.GetByName(Argumentos(0)) control2.enabled=false Dim sSQL as string, indice as integer if control.CurrentValue="" then sSQL="" 'oForm.Columns.GetByName(control2.DataField).updateNull 'Value=-1 else indice=Cint(Control.ValueItemList(Control.SelectedItems(0))) sSQL= "SELECT """+Argumentos(2)+""", ""Id"" FROM """+Argumentos(1)+""" WHERE ""IdPrecedente""="+STR(indice)+" ORDER BY """+Argumentos(2)+""" ASC" endif Control2.ListSource=Array(sSQL) Control2.refresh() if control2.CurrentValue="" and oForm.Columns.GetByName(control2.DataField).wasnull=false then oForm.Columns.GetByName(control2.DataField).updateNull control2.enabled=true if control2.Tag<>"" then AutLstForm_ActLstCntl(control2) endif End Sub
Verás, que deberás cambiar Id por el campo de la Tabla utilizado en tu BD, asi como IdPrecedente.Código: Seleccionar todo
sSQL= "SELECT """+Argumentos(2)+""", ""Id"" FROM """+Argumentos(1)+""" WHERE ""IdPrecedente""="+STR(indice)+" ORDER BY """+Argumentos(2)+""" ASC"
Nos queda otra macro, para el Formulario en su acontecimiento "al cambiar de registro", se encarga de iniciar todo con el dato del primer ListBox:
Si te fijas, buscará el valor del ListBox LstPaises para iniciar la cascada de ListBox.Código: Seleccionar todo
Sub AutLstForm_Comprueba_ListBox(Event as Object) Dim Control as Object,sSQL as string Control=Event.Source.GetByName("LstPaises") AutLstForm_ActLstCntl(Control) End Sub
Más o menos creo que esta explicado, si lo ves muy complicado puedo echarle un ratillo y adaptarlo a tu bd.
OOo 3.3 Corriendo en Windows 7
En mi Espacio para OpenOffice Base tienes programas, recursos y vídeos que he ido creando... visítalo
En mi Espacio para OpenOffice Base tienes programas, recursos y vídeos que he ido creando... visítalo
Re: listas en cascadas
Si con las respuestas obtenidas consideras que se ha dado solución a tu consulta (aunque la solución obtenida sea que no la hay
), por favor, marca el tema como resuelto.
Si no sabes cómo, por favor, lee Como marcar como [RESUELTO] un tema.
Gracias por participar en el foro y ayudar a que todo esté ordenado.

Si no sabes cómo, por favor, lee Como marcar como [RESUELTO] un tema.
Gracias por participar en el foro y ayudar a que todo esté ordenado.
+info en la web "no oficial" dedicada a OpenOffice en Español
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas
AOO 4.1.2 y LibO 4.4.6 en W10 y en Lliurex
No respondo mensajes privados sobre AOO, por favor, utiliza el foro para tus preguntas