Hola, les cuento que estoy bastante involucrado a crear un pequeño sistema gracias a Libreoffice base, pude hacer un formulario de inserción de registros usando OOO Basic para obtener los datos e ingresarlos a la base de datos. Ahora pasé a la parte de crear un formulario Buscador/consulta para buscar información en la BD, y quiero utilizar un "control de tabla" para mostrar los resultados (y al mismo tiempo mostrar más informacion al hacer click en un registro). Pero mi problema es que no encuentro la suficiente información para crear una MACRO que se ajuste a mis necesidades. Quiero crear las columnas del control de tabla mediante MACRO, ya que las columnas a mostrar hacen referencias a campos de diferentes tablas, pero que están relacionadas entre sí. Mi problema es que al ingresar al formulario quiero que se vean los nombres de los campos involucrados, sin mostrar registro alguno (es decir, la tabla vacía). Y más importante aún, quiero enlazar el "control de tabla" a una consulta SQL, es decir, mostrar el resultado de una consulta dados los datos que el usuario proporcione. He visto que al crear una vista se pueden enlazar campos de diferentes tablas, pero realmente me siento mas cómodo y con mas libertad programando todo en una macro.
PD: Estuve buscando por la WEB durante horas y parece no haber mucha información al respecto sobre uso del "control de tabla" usando programacion OOO basic... o bien no he sabido encontrar las palabras justas para obtener las respuestas que busco.
[RESUELTO] Control tabla a consulta SQL mediante MACRO
[RESUELTO] Control tabla a consulta SQL mediante MACRO
Última edición por maxinz87 el Mié Ene 02, 2019 9:28 pm, editado 1 vez en total.
OpenOffice 6 en Windows 10 y Ubuntu Mate 16.04.4
Re: enlazar Control de tabla a consulta SQL mediante MACRO
Buenas!
La aportación de un ejemplo sin datos sensibles es la mejor manera para poderte ayudar.
Sin ejemplo las interpretaciones pueden ser de lo más variopinto.
Lo que creo es que las macros te salvan la vida muchas veces, pero si el sistema tiene algo que funciona lo suyo es usarlo:
Subformulario con el control de tablas ligado al formulario principal en el que hacer las búsquedas para que en el Subformulario se muestre el filtrado.
Un saludo !
La aportación de un ejemplo sin datos sensibles es la mejor manera para poderte ayudar.
Sin ejemplo las interpretaciones pueden ser de lo más variopinto.
Lo que creo es que las macros te salvan la vida muchas veces, pero si el sistema tiene algo que funciona lo suyo es usarlo:
Subformulario con el control de tablas ligado al formulario principal en el que hacer las búsquedas para que en el Subformulario se muestre el filtrado.
Un saludo !
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: enlazar Control de tabla a consulta SQL mediante MACRO
Gracias por la respuesta Longi, pero creo que de a poco me voy acercando a lo que quiero. Les cuento que he creado en un formulario un "control de tabla" sin enlazar dicho control a alguna de las tablas de la base de datos, luego procedí a crear manualmente los campos que quería que se visualizaran en dicho control. Finalmente me dirigí a las propiedades del formulario y cambié el Tipo de contenido a "Orden de SQL", y debajo, en el campo "Contenido" escribí la declaración SQL asociando cada campo de la consulta con el alias correspondiente a los campos que manualmente definí en el "control de tabla", y mágicamente, al ejecutar el formulario, los registros de la consulta aparecieron dentro del control... ahora la cuestión es que quiero pasar declaraciones SQL personalizadas mediante macros. ejecuté Xray para ver las propiedades y los métodos del formulario, sin embargo no encontré la propiedad o el método donde pasar una declaración SQL, para luego actualizar el formulario y que se actualicen los registros en el "control de tabla". Busqué por diferentes foros en español y en inglés y nadie se ha topado con una situación similar.
De antemano les agradezco las respuestas.
Que pasen una muy feliz navidad!
De antemano les agradezco las respuestas.
Que pasen una muy feliz navidad!
OpenOffice 6 en Windows 10 y Ubuntu Mate 16.04.4
Re: enlazar Control de tabla a consulta SQL mediante MACRO
Buenas!
Parece que fui un poco parco en mis explicaciones:
Un subformulario es un formulario dentro de otro, por lo que tiene sus propiedades, como por ejemplo el origen de datos, que puede ser una tabla, una vista, una orden SQL o una consulta.
También tiene entre sus propiedades el poderlo enlazar por uno o más campos al formulario principal, con lo que el formulario principal va a 'obligar' al subformulario a un grupo de datos u otro en función del campo por el que estén enlazados:
Formulario principal:'ID', 'Ciudad', 'Pais', 'Continenete'
Formulario secundario:'ID1', 'Vendedor', 'Ciudad', 'Tfno', 'Cantidad de ventas'
Si los enlazas por el campo 'Ciudad', el subformulario enseñaría todos los vendedores de la ciudad señalada en el formulario principal, pero que se hallen en la fuente de datos del subformulario, y no has tenido que hacer ninguna macro para el filtrado, ya te lo da hecho el sistema.
Por otro lado, el control de tablas es un control con múltiples controles dentro de él, y es una forma de ver los datos de un formulario muy similar a ver la tabla de origen de datos del propio formulario, por eso, cuando asignas el SQL al formulario te 'aparecen' los campos. Normalmente se hace al revés: primero diseñas la fuente de datos (SQL en tu caso, pero podría ser una consulta, o utilizar directamente una tabla) y después haces el subformulario al que metes el control de tablas. Después añades las columnas con el origen de datos entre los que te ofrece la fuente de datos que preparaste previamente, que además es la fuente de datos del subformulario.
Salvo que sea algo muy bien pensado y muy bien justificado, no creo que sea necesario el uso de macros para esta funcionalidad que describes en el proyecto que tienes entre manos.
Las macros son buenas, o incluso muy buenas, pero a veces son como las armas: 'las carga el diablo'
Felices días (Navidad ya pasó).
Un saludo!
Parece que fui un poco parco en mis explicaciones:
Un subformulario es un formulario dentro de otro, por lo que tiene sus propiedades, como por ejemplo el origen de datos, que puede ser una tabla, una vista, una orden SQL o una consulta.
También tiene entre sus propiedades el poderlo enlazar por uno o más campos al formulario principal, con lo que el formulario principal va a 'obligar' al subformulario a un grupo de datos u otro en función del campo por el que estén enlazados:
Formulario principal:'ID', 'Ciudad', 'Pais', 'Continenete'
Formulario secundario:'ID1', 'Vendedor', 'Ciudad', 'Tfno', 'Cantidad de ventas'
Si los enlazas por el campo 'Ciudad', el subformulario enseñaría todos los vendedores de la ciudad señalada en el formulario principal, pero que se hallen en la fuente de datos del subformulario, y no has tenido que hacer ninguna macro para el filtrado, ya te lo da hecho el sistema.
Por otro lado, el control de tablas es un control con múltiples controles dentro de él, y es una forma de ver los datos de un formulario muy similar a ver la tabla de origen de datos del propio formulario, por eso, cuando asignas el SQL al formulario te 'aparecen' los campos. Normalmente se hace al revés: primero diseñas la fuente de datos (SQL en tu caso, pero podría ser una consulta, o utilizar directamente una tabla) y después haces el subformulario al que metes el control de tablas. Después añades las columnas con el origen de datos entre los que te ofrece la fuente de datos que preparaste previamente, que además es la fuente de datos del subformulario.
Salvo que sea algo muy bien pensado y muy bien justificado, no creo que sea necesario el uso de macros para esta funcionalidad que describes en el proyecto que tienes entre manos.
Las macros son buenas, o incluso muy buenas, pero a veces son como las armas: 'las carga el diablo'
Felices días (Navidad ya pasó).
Un saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: enlazar Control de tabla a consulta SQL mediante MACRO
Bueno, después de tantos días de romperme la cabeza tratando de encontrar la solución que quería puedo decir que LA HE ENCONTRADO.
Utilizando Xray pude verificar que la cadena SQL que uno escribe en el campo "Contenido", en las propiedades del Formulario en cuestión, es guardada en la propiedad "command" del formulario, es así que puedo generar la declaración SQL que desee, insertarla en la propiedad command y luego ejecutarla con el metodo execute(), método que se encuentra también en el formulario. De esta forma gano libertad para poder crear un buscador totalmente personalizado, combinando campos de varias tablas en un mismo "Table control", para poder mostrar el resultado deseado.
Utilizando Xray pude verificar que la cadena SQL que uno escribe en el campo "Contenido", en las propiedades del Formulario en cuestión, es guardada en la propiedad "command" del formulario, es así que puedo generar la declaración SQL que desee, insertarla en la propiedad command y luego ejecutarla con el metodo execute(), método que se encuentra también en el formulario. De esta forma gano libertad para poder crear un buscador totalmente personalizado, combinando campos de varias tablas en un mismo "Table control", para poder mostrar el resultado deseado.
OpenOffice 6 en Windows 10 y Ubuntu Mate 16.04.4
Re: [RESUELTO] Control tabla a consulta SQL mediante MACRO
Buenas!
Me alegro que encontrases el camino que buscabas! No lo hay como la perseverancia para alcanzar las metas.
He releido los posts y sigo pensando que como un ejemplo no lo hay, ya que a veces la expresión escrita no nos permite los matices necesarios, y lo que uno expresa con toda claridad (para él) no lo es tanto para los demás.
Considero que consideras (quizá me equivoco) que el control de tablas ha de mostrar columnas diferentes según el SQL de búsqueda que le quieras imponer ('command'). La vía que intuyo que quieres seguir, válida como cualquier otra, puede ser un tanto compleja, pero mientras sirva no tengo nada que objetar.
Simplemente considera que si en el origen de datos puedes usar una consulta o un SQL amplio, con los campos que puedas necesitar para todos los filtros que te puedas imaginar que tengas que hacer, puedes añadir todas las columnas al control de tablas, y luego, con macros, ocultar o mostrar las columnas que te interesan.
De todos modos, si tienes un ejemplo con lo conseguido, sería de agradecer que lo colgases. A todos nos gusta aprender!
Un saludo!
Me alegro que encontrases el camino que buscabas! No lo hay como la perseverancia para alcanzar las metas.
He releido los posts y sigo pensando que como un ejemplo no lo hay, ya que a veces la expresión escrita no nos permite los matices necesarios, y lo que uno expresa con toda claridad (para él) no lo es tanto para los demás.
Considero que consideras (quizá me equivoco) que el control de tablas ha de mostrar columnas diferentes según el SQL de búsqueda que le quieras imponer ('command'). La vía que intuyo que quieres seguir, válida como cualquier otra, puede ser un tanto compleja, pero mientras sirva no tengo nada que objetar.
Simplemente considera que si en el origen de datos puedes usar una consulta o un SQL amplio, con los campos que puedas necesitar para todos los filtros que te puedas imaginar que tengas que hacer, puedes añadir todas las columnas al control de tablas, y luego, con macros, ocultar o mostrar las columnas que te interesan.
De todos modos, si tienes un ejemplo con lo conseguido, sería de agradecer que lo colgases. A todos nos gusta aprender!
Un saludo!
Openoffice 4.1.7, en Windows 10
Libreoffice 6.4.2, en Windows 10
Libreoffice 6.4.2, en Windows 10
Re: [RESUELTO] Control tabla a consulta SQL mediante MACRO
Longi, apenas pueda voy a subir un ejemplo, pero no puedo hacerlo ahora por que estoy trabajando con una base de datos externa al formulario (MySQL).
OpenOffice 6 en Windows 10 y Ubuntu Mate 16.04.4