La Parte 2 discutirá la relación entre las tablas y los formularios de la base de datos. En particular, cómo definir una relación entre dos tablas y usar "tablas de referencia" como fuente de datos para las listas desplegables.
Versiones de OpenOffice y LibreOffice para las cuales este mensaje es relevante de 3.0 a 6.2 (la versión actual de LibreOffice). A partir de la versión 3.0, OpenOffice Base ahora tiene la capacidad de guardar scripts en un archivo de base de datos (con la extensión .odb), lo que hace que sea conveniente distribuir el código de macro OO Basic
Ha habido cierta confusión con los formularios en OpenOffice Base. El hecho es que en el proceso de evolución del software de una suite ofimática a un entorno de base de datos, resultó que Formularios, Formularios, Formularios y Formularios no son lo mismo. Y la forma no es solo forma. Explicaré con más detalle.
Cuando abre la base de datos de OpenOffice Base en modo de edición, ve cuatro marcadores en el lado izquierdo de la pantalla. En la versión rusa, sonará como
- Mesas
- Consultas
- Formas
- Informes
En este sentido, el formulario es una aplicación separada que se ejecuta en una ventana separada. También noto que, de hecho, esta es la ventana en la que se inicia la instancia de OpenOffice Writer.
Nota Dado que el formulario es en realidad una instancia de OpenOffice Writer, puede crear una aplicación sin cargar el componente OpenOffice Base, directamente en OpenOffice Writer.Cada formulario tiene una colección de objetos de formularios de formulario. Al principio, esta colección está vacía. A pesar de esto, puede abrir y cerrar el formulario. E incluso mostrar información de texto en él. Y solo cuando agrega un nuevo control (por ejemplo, Button), el sistema creará un objeto Form con el nombre predeterminado Form, si no ha creado ese objeto usted mismo en ese momento.
Es más conveniente crear nuevos formularios desde el Navegador de formularios (se muestra como una brújula en la paleta), que también se puede llamar desde el menú Ver | Barra de herramientas | Navegación de formulario. Los objetos de formulario se crean en el nivel superior de la colección de formularios o subordinados a otro objeto de formulario. Esto no afecta la apariencia del formulario, pero puede ser útil al definir relaciones entre tablas.
Aquí deberíamos notar una anomalía del objeto Form. Este objeto es principalmente un objeto asociado con una tabla de base de datos o con una consulta SQL. Puede pensar en Form como un objeto ResultSet (como realmente es). Form, por otro lado, es un contenedor para controles, como FORM en un documento HTML (y esto también es cierto).
Abra el formulario recién creado en modo de edición (botón derecho del ratón | Editar). Cree un nuevo objeto Form con el nombre Form u otro nombre que desee. En este elemento de formulario, cree un elemento de formulario hijo.
Cada formulario debe asociarse con una tabla de base de datos existente, consulta o consulta SQL. En el formulario esclavo, puede establecer las reglas para que los datos filtrados por el valor de los campos relacionados en el formulario principal se muestren como maestro / esclavo. Para hacer esto, en el editor de propiedades del formulario subordinado, complete los campos de enlace maestro y las propiedades de enlace de los campos esclavos.
Ahora agregaremos un elemento de Control de tabla a cada uno de los Formularios seleccionando el Formulario apropiado en el Navegador de formularios>. El elemento Control de tabla no está en el panel de elementos disponibles. Para mostrar una lista ampliada de elementos, debe activar el botón Más controles en la paleta de elementos. Después de agregar el elemento Control de tabla, es necesario ingresar al modo de edición de este elemento y agregar las columnas necesarias para la visualización de la tabla (botón derecho del mouse -> Insertar / Reemplazar / Eliminar columna)
El segundo tipo es el tipo de relación que se encuentra con frecuencia en la práctica entre tablas (después de Maestro / Esclavo), y que consideraremos: una relación de tipo Directorio. Almacenamos la clave del objeto GUID, autoincremento, en la tabla de datos, y en la tabla mostrada mostramos su nombre completo, tomado de la tabla de referencia asociada. Hay un mecanismo conveniente para esto. En el Diseñador visual de tablas, agregue una columna de tipo Cuadro de lista. Si ya se ha creado una columna de tipo Numérico / Texto, en la que se muestra la clave (y no el nombre), es posible cambiar su tipo a Cuadro de lista (clic derecho | Reemplazar con | Cuadro de lista). A continuación, edite la lista de propiedades de la columna. En la pestaña de datos, establezca la propiedad Tipo de contenido de la lista en SQL. La consulta en la propiedad Contenido de la lista debe contener el valor mostrado en la primera columna, y la propiedad Campo enlazado será el índice de la columna con el campo clave (suponiendo que la primera columna tenga el índice 0). Es decir, en la gran mayoría de las consultas, este será 1 para consultas de tipo
SELECT USERNAME, USERID FROM USERS ORDER BY USERNAME
Hasta ahora, el trabajo se ha descrito en modo configurador sin programación. Agregue funcionalidad con macros OO Basic.
Cree un filtro para la tabla de la base de datos por el valor ingresado en el cuadro de texto. Para hacer esto, escribimos en el lenguaje OO Basic un procedimiento que procesa un evento desde el teclado.
Sub TextBox_onKeyUp(oEvent) oDocument = ThisComponent oDocument.LockControllers sText = oEvent.Source.text if Len(sText) > 3 Then oForm = ThisComponent.Drawpage.Forms.getByName("MyForm") oForm.Filter = "USERNAME LIKE '" + sText + "%'" oForm.reload() End If oDocument.UnlockControllers End Sub
Asociamos este procedimiento con el evento de liberación de clave del campo de texto (en la pestaña de eventos de la lista de propiedades del elemento). Tenga en cuenta que este campo de texto debe ubicarse en otro formulario (no en el que se superpone el filtro), de modo que la recarga de oForm.reload () no "anule" su valor actual ingresado desde el teclado.
Continuará