Curso de dbExpress e DataSnap

Parte VII – Índices em memória

 

A partir desta parte do curso, vamos conhecer algumas técnicas avançadas de desenvolvimento com dbExpress e DataSnap, principalmente através do componente ClientDataSet.

O exemplo apresentado neste artigo mostra como definir índices em memória para o ClientDataSet. Para isso, basta setar a propriedade IndexFieldNames (para criar índices mais personalizados use a propriedade IndexDefs e IndexName). Não é necessário criar arquivos de índices como no Paradox ou refazer a consulta SQL no banco.

Inicie uma nova aplicação Delphi VCL e coloque no formulário principal coloque um ComboBox, Label, ClientDataSet, DataSource e DBGrid, fazendo as ligações como mostrado abaixo:

 

object ClientDataSet1: TClientDataSet

end

 

object DataSource1: TDataSource

  DataSet = ClientDataSet1

end

 

object DBGrid1: TDBGrid

  DataSource = DataSource1

end

 

Dê um clique de direita no ClientDataSet, escolha Load from MyBase Table e abra o arquivo Customer.XML, localizado nos demos do Delphi, por padrão no diretório:

 

C:\Arquivos de programas\Arquivos comuns\Borland Shared\Data

 

Seu formulário deve estar semelhante ao mostrado a seguir:

Archive07_1.gif 

Figura 1.

No evento OnCreate do formulário digite:

 

procedure TFrmMain.FormCreate(Sender: TObject);

begin

  ClientDataSet1.GetFieldNames(ComboBox1.Items);

end;

 

Isso preenche o Combo com a lista de campos disponíveis no ClientDataSet.

Archive07_2.gif 

Figura 2.

No evento OnChange do Combo, ordenamos o ClientDataSet através do campo que o usuário selecionou:

 

procedure TFrmMain.ComboBox1Change(Sender: TObject);

begin

  ClientDataSet1.IndexFieldNames := ComboBox1.Text;

end;

 

Fazemos isso também no OnTileClick do DBGrid, para ordenar o DataSet conforme a coluna clicada no grid:

 

procedure TFrmMain.DBGrid1TitleClick(Column: TColumn);

begin

  if Assigned(OldColumn) then

    OldColumn.Title.Color := DBGrid1.FixedColor;

  ClientDataSet1.IndexFieldNames := Column.FieldName;

  Column.Title.Color := $00408080;

  OldColumn := Column;

end;

 

A figura a seguir mostra a aplicação em execução, observe o efeito de cor que colocamos na coluna:

Archive07_3.gif 

Figura 3.

 

Download

 

dbExpress, DataSnap e ClientDataSet: Técnicas Avançadas

Para mais informações sobre acesso a dados no Delphi e técnicas avançadas, sugiro a leitura do meu livro, “Delphi: Programação para Banco de Dados e Web”, como apoio para o aprendizado das tecnologias. Na obra mostro várias técnicas introdutórios e avançadas de desenvolvimento com ClientDataSet, dbExpress e DataSnap (multicamadas, incluindo SOAP e COM+). Para mais informações, consulte o link http://www.clubedelphi.net/guinther

 

 

Leia todos artigos da série