Sign in Join
Wiki copytemporary

Databases in Lazarus/es

Deutsch · English · Español · Italiano

Objetivo

   Esta página pretende ofrecer un panorama general de la utilización de bases de datos en Lazaraus, y para proporcionar un punto en el que relacionar otras páginas sobre bases de datos.

Conjunto de Datos (Datasets)

   La utilización de Bases de Datos en Lazarus (o FreePascal) está fundamentada principalmente en la clase TDataset, que representa una tabla o consulta en la aplicación. Como con muchas otras clases fundamentales, no se usará la misma de forma directa, sino que se hará mediante una clase derivada. Esto tiene su porqué: para ofrecer acceso a distintas clase de Bases d Datos, como archivos de dBase o texto locales, o bases de datos remotas como PostgreSQL, Firebird, MariaDB, MySQl y muchas otras. Algunas de las clase derivadas de TDataset acceden a las tablas de las bases de datos directamente, mientras otras utilizan componentes adicionales o librerías para llevar a cabo el acceso.

   Ver las clases derivadas de acceso a datos en esta página.

   Las clases derivadas de TDataset, que no son componentes visuales son (habitualmente) parte del Librería de Componentes Libres -Free Component Library (FCL)- en lugar de formar parte de la librería de Componentes de Lazarus -Lazarus Component Library (LCL)-.

Utilizando Datasets

   Los components Datasets se pueden utilizar indistintamente por código o cómo componentes visuales. En una aplicación Lazarus normal se suelen utilizar ambos métodos. En cualquier caso, el primer paso es crear el descendiente de TDataSet, iniciarlo para conectarlo con la tabla o consulta, por último realizar la conexión, abriendo el conjunto de datos. Esto se puede hacer por código en tiempo de ejecución o colocando el componente en el formulario y dando valores a las propiedades durante el diseño. Los detalles concretos varían bastante según las diferentes clases derivadas de TDataset, por ello hay que ver las distintas guías para los componentes de acceso a distintas Bases de Datos.

   Cuando se abre el conjunto de datos (Dataset) se crean una serie de componentes de campos, uno por cada campo o columna de la tabla o consulta que se ha abierto. Cada componente de campo es descendiente de TField, adecuado al tipo particular del campo, v.gr., TStringField, para campos de tipo alfabético.

Utilizando datasets desde código

El acceso mediante código está explicado con más detalle en Utilizando componentes Dataset y de campo(página que parece no existir), esta es una visión general muy simple:

Utilizando componentes visuales enlazados a datos (data-aware components)

   Para utilizar bases de datos en una aplicación Lazarus al estilo RAD, normalmente se configura el componente de datos Dataset en el momento del diseño y se usan componentes enlazados a datos, de la forma siguiente

   Ver #Componentes de Datos más adelante para más detalles sobre los mismos.

Estados de los Dataset

   Los conjuntos da datos Dataset pueden estar es diversos estados. Aunque hay bastantes (échale un vistazo a la definición de TDataSetState en el código fuente de la unidad db.pas), los más importantes para conocer inicialmente son los marcados con asterisco (*):

Estado

Comportamiento

dsInactive (*)

El conjunto de datos (Dataset) está cerrado

dsBrowse (*)

El usuario puede moverse por el conjunto de datos, viendo los valores que contiene

dsEdit (*)

El usuario puede editar los valores de la fila activa. Los datos no son guardados hasta que se llama al método post.

dsInsert (*)

Una fila nueva se ha añadido y el usuario puede dar valores a los campos. El registro no se guarda hasta que se llama a post

dsOpening


dsSetKey


dsFilter


dsBlockRead


dsCalcFields


dsCurValue


dsNewValue


dsOldValue


dsInternalCalc


dsIRefreshFields


    Los otros estados son transitorios y son habitualmente manejados de forma automática. Se usan internamente y en código más complicado. Si la aplicación sólo visualiza los datos y se abren los dataset en diseño, se pueden ignorar los estados, ya que será dsBrowse casi siempre. Sin embargo, la mayoría de las aplicaciones cambiarán los datos en algún momento. Si se están usando componentes ligados a datos, estos manejarán la mayoría de los estados de forma automática. Si se cambia texto en un DBEdit, por ejemplo, el dataset se pondrá en el estado dsEdit, a menos que ya esté en dsEdit o dsInsert. Si se cambia a otro registro, y el estado es dsEdit o dsInsert, el registro es actualizado con los nuevos datos y el dataset vuelve al estado dsBrowse. Por contra, si se accede a los datos mediante código, el responsable de cambiar de estado es el código del programa (es decir, el programador). El componente dbNavigator (ver más adelante) permite al usuario cambiar los estados explícitamente.

Actualizar (Post) y Cancelar

   Si has editado o insertado un registro, los nuevos valores son guardados en una memoria intermedia.

Componentes de Datos

Para usar cualquiera de estos componentes, se añade a un formulario y se establece, como mínimo, la propiedad de fuente de datos Datasource. Sin olvidar otras propiedades importantes.

Componentes de campo único

Estos componentes se enlazan a un único campo. Además del nombre del Datasource, hay que dar el nombre del campo al que enlazan. Son estos:

Aquí cabe decir que la justificación del texto dentro del recuadro de DBEdit es posible, al menos en la versión 1.4, por medio de la propiedad Alignment al igual que se utiliza con Edit. Sería cómodo tenerla como una propiedad más publicada en el inspector de objetos pero por el momento no está incluida, con lo cual hay que realizarlo con código.

TDBEdit.Alignment = taLefttJustify;

TDBEdit.Alignment = tacenter;

TDBEdit.Alignment = taRightJustify;

Componente DBGrid

   Este componente muestra, por defecto todos los campos en forma de tabla. No obstante, poniendo valores en la colección Columns se pueden restringir los campos que se visualizan y dar el ancho y los títulos de las columnas.

   Al parecer hay todavía algunos problemas con la edición en DBGrid, por lo que aunque la edición es, sin duda, posible, puede ser más seguro utilizarlo sólo para mostrar datos (poner readonly a verdadero) y utilizar componentes de campo único para la edición.

Componente navegador (''DBNavigator'')

   Este componente le da al usuario control directo sobre el conjunto de datos, permitiéndole:

Principales propiedades:

From the Free Pascal wiki, page "Databases in Lazarus/es", as it stood on 2017-05-04 after a change by Jma sp, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 3, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.