DBKit v2: Controles sensibles al contenido que funcionan

A continuación encontrarás traducido al castellano el artículo escrito por Geoff Perlman y publicado originalmente en el Blog oficial de Xojo.

DBKit v2 elimina virtualmente todo el código requerido a la hora de utilizar DBKit. Abre la base de datos, ejecuta la consulta, copia los valores de cada campo en los controles; los guarda cuando el usuario los modifica y gestiona los errores. Repite este comportamiento en cada ventana o página web, y ninguno de ellos requiere de la implementación de código con DBKit.

DBKit es un conjunto de controles sensibles al contenido para Xojo: utiliza un control DBKit.TextField en tu diseño, indícale cuál es la base de datos, table y columna; se encargará de cargar, mostrar y guardar el valor por sí mismo. Así no precisarás de añadir código para gestionar consultas o la gestión de errores entre otras tareas.

La versión 1 mostró la idea y cubría los aspectos básicos además de ahorrar tiempo a la hora de crear aplicaciones. Aun así, dejaba a tu cargo la implementación de ciertas partes: rellenar los listbox, sincronizar el contenido de los controles, y escribir el código encargado de mover los datos hacia los controles y también desde los controles.

La Versión 2 completa estos aspectos. Ahora los controles son realmente autosuficientes. En la mayoría de los casos no tendrás que escribir código en absoluto. El control CustomersWindow del proyecto de ejemplo DBKit Desktop no utiliza código en absoluto. Lo mismo resulta cierto para CustomersPage en el ejemplo de proyecto DBKit Web.

También hemos creado un nuevo control desde cero (DBKit.Table): este se encarga de obtener las filas que ha de mostrar, de modo que si tienes cientos o millones de filas esto ya carece de relevancia. Las filas se cargan de forma rápida. Table sustituye por completo al enfoque utilizado anteriormente y que se basaba en el uso de ListBox, tanto en Desktop como en Web.

Novedades

  • DBKit.Row. Se trata del núcleo de v2. Una Row es el objeto que cada evento de fila gestiona por ti, y es el modo en el que trabajas con los datos en cualquier parte de DBKit. Lee y escribe los valores de columna por nombre: row.Column(“quantity”). Los valores de las tablas relacionadas utilizan nombres cualificados: row.Column(“products.price”). Las columnas que no existen en la base de datos, como las columnas calculadas, funciona exactamente de la misma forma: asígnalas y la tabla las seleccionara. Un objeto, una API, en todas partes.
  • Eventos Row. La nueva versión introduce un grupo completamente nuevo de eventos de fila que cubren todo su ciclo de vida: RowDisplayed, RowLoaded, RowChanged, RowEditing, RowSaving, RowSaved, RowCreated, RowDeleted, RowUndone y RowNotSelected. RowDisplayed se dispara por cada una de las filas cuando se muestran, siendo aquí donde reside la personalización basada en cada fila, incluyendo las columnas calculadas:
Sub RowDisplayed(row As DBKit.Row) Handles RowDisplayed
  row.Column("linetotal") = row.Column("quantity") * row.Column("products.price")
End Sub
  • Columnas calculadas. Algunos de los valores no se encuentran en la base de datos. Por ejemplo, una línea de Total es el resultado de multiplicar el número de unidades por una cantidad determinada. Define la columna, calcula el resultado en RowDisplayed, y la tabla lo tratará como una columna más, incluyendo los totales y la edición en línea.
  • Filas relacionadas, automáticamente. Indica a DBKit las relaciones de tu tabla y cargará por sí mismo todas las filas relacionadas. Sólo has de configurar la propiedad TableRelationships en el Inspector, una relación por línea.
invoices.customerid=customers.id

DBKit.Table muestra las columnas relacionadas sin trabajo adicional y, en los diseños realizados con DBKit, aquellos controles que estén enlazados con columnas de tabla relacionadas, también se cargarán automáticamente. El anterior ejemplo de products.price proviene de una tabla de productos relacionadas; no hay necesidad de realizar JOINs en tu código.

  • Edición en línea. Marca columnas como editables y los usuarios podrán editar las celdas justo en la tabla. Las ediciones siguen los mismos eventos de fila; de modo que las columnas calculadas se muestran de forma correcta automáticamente.
  • Un campo de búsqueda más potente. Suelta un DBKit.SearchField en tu diseño y los usuarios podrán ejecutar búsquedas a medida que escriban, sin necesidad de utilizar código en absoluto. Buscará automáticamente cada una de las columnas mostradas cuyos datos coincidan con el texto introducido: la correspondencia de texto se realiza desde el inicio del valor, el uso de comillas fuerza la ejecución de una búsqueda exacta, el uso de “>” y “<” aplica comparación numérica, el uso de dos puntos definen un rango, las fechas funcionan utilizando el formato ISO local, y al escribir el nombre de una columna se aplicará la búsqueda sólo sobre dicha columna.
  • Conexión a bases de datos sin código. DBKit funciona directamente con objetos DatabaseConnection. Configura la conexión en el IDE para SQLite, MySQL, PostgreSQL o bien ODBC, emparéjalo con DBKit y no tendrás que escribir ningún código relacionado con la conexión.

Diseños con DBKit

DBKit.Window, DBKit.Page y DBKit.Container son diseños con una idea simple: asocia el diseño a una tabla, y cada control DBKit que se utilice sobre ellos se encargará de mostrar el registro en curso. El diseño se encarga de gestionar la carga del registro, guardar las ediciones, añadir y borrar registros, deshacer, navegar entre registros, y cargar también los registros relacionados. Sólo has de colocar los controles, y DBKit hace el resto.

Aprende una vez, y listo

Todo lo anterior funciona del mismo modo en las aplicaciones de escritorio como Web: los mismos eventos, el mismo objeto Row. Esto significa que sólo tendrás que aprender su funcionamiento una vez, y utilizarlo en todos estos tipos de proyectos.

Actualizar desde V1

Si actualizas desde v1 La guía de conversión es breve, y la mayoría consiste en código a borrar. Ese es el objetivo.

Pruébalo

DBKit v2 está disponible de forma inmediata. Los proyectos de ejemplo DBKit Desktop Example y DBKit Web Example te muestran como funciona: clientes, facturas y elementos de factura, con una muy escasa cantidad de código a la vista. La página de clientes en el ejemplo web, encargada de mostrar y editar registros completos de clientes, no contiene código en absoluto. Ni una línea. Y este es sólo el comienzo; v2 tiene muchas más características, de modo que te animo a que consultes la visión general de DBKit y la referencia de Clases.

Si vas a utilizar DBKit por primera vez, te animo a que pruebes los tutoriales sobre DBKit para Desktop y Web.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *