Professional Documents
Culture Documents
Componentes dbExpress
Ok, muito bom utilizar uma arquitetura como o dbExpress, que permite
desenvolver de forma transparente para diferentes arquiteturas. Mas est longe de
ser prtico construir uma aplicao 2 camadas, visto a variedade de componentes
que devem se utilizados, relacionados e configurados. Essa dificuldade fica ainda
mais evidente para aqueles que vem do BDE.
Pensando nisso, a Borland criou o SQLClientDataSet no Delphi 6. Esse componente
na verdade o conjunto de 3 componentes:
TCustomCachedDataSet = class(TCustomClientDataSet)
private
FProvider: TDataSetProvider;
...
TSQLClientDataSet = class(TCustomCachedDataSet)
private
FDataSet: TSQLDataSet;
FSQLConnection: TSQLConnection;
...
Com isso, muito simples criar uma aplicao sem que seja necessrio configurar e
relacionar uma variedade de componentes, visto que tudo feito internamente pelo
SQLClientDataSet. Essa abordagem, no entanto, tem algumas desvantagens:
Uma migrao para 3 camadas ficaria difcil, pois no h uma separao fsica
entre os componentes;
No h maneira direta de acessar os recursos, propriedades e eventos dos
componentes internos (SQLDataSet e DataSetProvider);
No possvel configurar os TFields do SQLDataSet interno;
O componente foi descontinuado no Delphi 7;
Como o DataSetProvider e o ClientDataSet podem ser utilizados com outras
tecnologias de acesso a dados (como BDE ou IBX), a Borland resolveu criar
variantes do SQLClientDataSet, que ao invs de usarem dbExpress internamente,
podem usar BDE ou IBX. So eles:
SimpleDataSet
Veja a seguir um fragmento do cdigo fonte desse componente, retirado dos fontes
da VCL:
TInternalSQLDataSet = class(TCustomSQLDataSet)
...
TSimpleDataSet = class(TCustomClientDataSet)
private
FConnection: TSQLConnection;
FInternalConnection: TSQLConnection;
FDataSet: TInternalSQLDataSet;
FProvider: TDataSetProvider;
...
Configurao rpida
Aps baixar o editor e descompactar os arquivos, basta abrir o arquivo .dpk, clicar
em Install e confirmar as alteraes sugeridas pelo Delphi.
Figura 8. Separao dos componentes de acesso a dados em dois DataModules, mesmo em uma aplicao duas
camadas.
Um abrao todos e at a proxima!