<-- Capítulo

Índice del tutor de Delphi
© Copyright 1998
por David Martínez.

Todos los derechos reservados

Capítulo -->

Capitulo 6.4. Migrando a Módulos de Datos

Ahora que tenemos motivos claros para crear un módulo de datos, migraremos la pequeña aplicación que hemos hecho para que los datos estén separados de la implementación.

Desde el menú de Delphi, seleccione File-New. En el diálogo de "New Items" encontrará el Data Module en la primera página. Selecciónelo y presione OK. Delphi nombra nuestro nuevo módulo de datos DataModule1.

Grábelo en disco con el nombre "datamoduleclientes" para que tengamos un nombre al cual referirnos cuando lo comencemos a usar desde otros lugares.

Ahora necesitamos mover los queries que tenemos en la forma principal a nuestro nuevo datamodule. Esto es tan sencillo como seleccionarlos, y cortar y pegar.

Ahora cambie la propiedad "Name" del datamodule para que sea significativa. En mi ejemplo lo nombré "dmClientes".

Si usted es perceptivo, habrá notado que los elementos TField que pertenecen a estos queries también han sido copiados, junto con todas las propiedades (nombres de campo, formatos, etcétera) que usted ha definido con anterioridad. Este fragmento del código de nuestro módulo de datos nos muestra que los TFields han sido copiados:


unit datamoduleclientes;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Db, DBTables;

type
  TdmClientes = class(TDataModule)
    qryClientesporApellido: TQuery;
    qryClientesporApellidoLAST_NAME: TStringField;
    qryClientesporApellidoFIRST_NAME: TStringField;
    qryClientesporApellidoACCT_NBR: TFloatField;
    qryClientesporApellidoADDRESS_1: TStringField;
    qryClientesporApellidoCITY: TStringField;
    qryClientesporApellidoSTATE: TStringField;
    qryClientesporApellidoZIP: TStringField;

Note que esto sólo ocurre con propiedades, NO con manejadores de eventos. Los manejadores de eventos están asociados con la forma y no con objetos dentro de la forma.

Ahora necesitamos decirle a la forma principal que los datos provienen no de los queries en la forma principal (por ejemplo qryClientesporApellido), sino de los queries en el módulo de datos (por ejemplo dmClientes.qryClientesporApellido). Seleccione la forma de Clientes y vaya al menú "File-Use Unit". A continuación podrá ver una lista de las formas que su forma principal no está usando. Seleccione "datamoduleclientes".

Ahora nuestra sección "implementation" tiene la siguiente apariencia:


implementation

uses consultaclientes, datamoduleclientes;

Seleccione el DataSource de la forma de Clientes. Notará que cuando cortó los TQueries para pegarlos en otro lugar, la propiedad DataSet se borró. Si usted abre la lista, Delphi encontrará los TQueries, ahora nombrándolos "dmClientes.(nombre del query)".

Esto nos dá una última pista: En el código del botón de consultas, en cualquier lugar donde usted mencione uno de los queries, debe ahora añadir el calificador "dmClientes." antes del nombre, para que el compilador lo encuentre. Una manera fácil de hacer esto es con la sentencia "with":


    // Primero decide que query vamos a usar.
    with dmClientes do begin
      case dlgConsulta.rgConsulta.ItemIndex of
         0: QueryAUsar := qryClientesporApellido;
         1: QueryAUsar := qryClientesPorCuenta;
         2: QueryAUsar := qryClientesPorRiesgo;
       end; //case
    end; // with

Esto es todo. Ahora usted puede ejecutar su programa y funcionará correctamente.

Copiar el Código fuente (7K, formato Zip) para esta sección

Capítulo -->