Sei sulla pagina 1di 9

Hello amigos Delphianos, neste artigo gostaria de passar alguns dos recursos, que est SUPER ferramenta de desenvolvimento,

estou falando do Delphi claro, vm nos proporcionando a cada ano de sua vida (e olha que ainda uma criana de apenas 10 anos). Hoje vou falar do ClientDataSet, nos ajudando a criar uma tabela temporria em memria, para inclumos registros temporrios, e depois fazermos o que quisermos com eles, gravar em banco de dados em arquivo em disco e etc...

Podemos comparar o ClientDataSet, com Bom Bril (mil e uma utilidades), este poderoso componente nos permite diversas coisas em se tratando de dados, e sobre dados temporrios em memria que vou falar. Quem nunca usou TRxMemoryData do RXLIB, que manipulvamos registros em memria com ele e depois salvvamos em banco? Como por ex: gerar parcelas a receber na nota de sada, dar manuteno em datas de vencimento, valores e ai sim, salvar no banco de dados.

Bom vamos ao que interessa:

Criando um novo Projeto File->New->Application, insira no Formulrio, um TClientDataSet e renomeo para CDS, insira um TDataSource e renome-o para DS e mude seu DataSet para CDS, insira um TDBGrid e mude seu DataSource para DS, insira um TDBNavigator e mude seu DataSource para DS, e por ltimo insira nove TButtons e mude seus captions como visto na Figura 1.

Figura 1. Formulrio da aplicao.

Criando Estrutura Vamos criar agora a estrutura de nossa tabela. D dois clique sobre o CDS e vamos inserir os TFields referente os campos que queremos em nossa estrutura Figura 1.1.

Figura 1.1. Editor de Campos TField.

Figura 1.2. Editor para criar novo

Pressione a tecla [INS] no Editor de Campos, ento ser aberto o editor para criar novo TField como a Figura 1.2. Em seguida insira os TFields com as informaes que segue abaixo:

Name = ID , Type = Integer, Field type = Data; Name = NOME, Type = String, Size = 40, Field type = Data; Name = VALOR, Type = BCD, Size = 2, Field type = Data;

Nota: Nos TFields criado, pode e acho que deve, ser atribudo configuraes para as propriedades como: DisplayFormat, DefaultExpression, Required entre outros etc..

Criando os Eventos dos Buttons

Listagem 1. Boto [Abir] Criar a tabela temporria em memria em seguida abre, para que possa ser usada.

procedure TForm1.btnAbrirClick(Sender: TObject); begin // Cria tabela temporria na memria. CDS.CreateDataSet; // Abre a tabela depois de criada. CDS.Open; end;

Listagem 2. Boto [Fechar] Fechar a tabela temporria da memria, consequentemente se os dados digitados no forem salvos, sero perdidos.

procedure TForm1.btnFecharClick(Sender: TObject); begin // Fecha a tabela temporria da memria. CDS.Close; end;

Listagem 3. Boto [Limpar Tabela] Limpa todos os registros da tabela temporria.

procedure TForm1.btnLimparClick(Sender: TObject);

begin // Apaga todos os registros da tabela temporria na memria. Cds.EmptyDataSet; end;

Listagem 4. Boto [Clonar Registro] Insere um novo registro na tabela temporria, clone do registro atual.

procedure TForm1.btnClonarClick(Sender: TObject); var varCdsClone: TClientDataSet; varI: Integer; begin // Cria uma variavl de tabela temporria na memria, // para receber os dados do registro a ser clonado. varCdsClone := TClientDataSet.Create(self); try // Clona o registro para a varivel criada acima. varCdsClone.CloneCursor(TClientDataSet(Cds),True); // Insere o novo registro na sua tabela original. Cds.Append; // Faz um loop para processar todos os campos da sua tabela original. for varI := 0 to Cds.FieldCount -1 do begin // Verifica se o tipo do campo do tipo data, para que no pegue valores // de campos do tipo calculado.

if (Cds.Fields[varI].FieldKind = fkData) then // Diz que o campo de sua tabela original, vai receber o campo da // tabela temporria que foi clonada. Cds.Fields[varI].Value := varCdsClone.FieldByName(Cds.Fields[varI].FieldName).Value; end; finally // Fecha a tabela temporria clonada. varCdsClone.Close; // Libera a var da tabela temporria clonada da memria. varCdsClone.Free; end; end;

Listagem 5. Boto [Salvar em Disco] Salva os dados da tabela temporria em arquivo.

procedure TForm1.btnSalvarClick(Sender: TObject); begin // Salva os registro na tabela temporria na memria para o disco. Cds.SaveToFile(Cds_Temp.xml); end;

Listagem 6. Boto [Carregar do Disco] Carrega os dados em arquivo para a tabela temporria.

procedure TForm1.btnCarregarClick(Sender: TObject);

begin // Carrega o arquivo .XML, para memria. Cds.LoadFromFile(Cds_Temp.xml); end;

Listagem 7. Boto [Criar ndice Nome] Cria um ndice pelo campo selecionado, e em seguida ordena os dados.

procedure TForm1.btnIndiceClick(Sender: TObject); begin // Cria o ndice pelo campo NOME. Cds.IndexFieldNames := NOME; end;

Listagem 8. Boto [Ativar Log] Ativa o recurso de log das alteraes feitas nos dados. Veja na Figura 2.

procedure TForm1.btnAtivarLogClick(Sender: TObject); begin // Ativa o log. CDS.LogChanges := True; end;

<?xml version="1.0" standalone="yes" ?> - <DATAPACKET Version="2.0"> - <METADATA>

- <FIELDS> <FIELD attrname="ID" fieldtype="i4" /> <FIELD attrname="NOME" fieldtype="string" WIDTH="40" /> <FIELD attrname="VALOR" fieldtype="fixed" DECIMALS="2" WIDTH="32" /> </FIELDS> <PARAMS CHANGE_LOG="7 6 8 8 7 8" /> (Log Ativado) </METADATA> - <ROWDATA> <ROW ID="1" NOME="EU" VALOR="1.00" /> <ROW ID="1" NOME="NOS" VALOR="2.00" /> <ROW ID="1" NOME="VAMOS" VALOR="3.00" /> <ROW ID="1" NOME="SOMOS" VALOR="4.00" /> <ROW ID="1" NOME="FICAMOS" VALOR="5.00" /> <ROW RowState="1" ID="1" NOME="VOCES" VALOR="7.00" /> (1 alterao) <ROW RowState="9" ID="1" NOME="VOCES" VALOR="6.00" /> (2 alterao) <ROW RowState="8" ID="1" NOME="VOCES" VALOR="10.00" /> (registro atual) </ROWDATA> </DATAPACKET> Figura 2. Exemplo do arquivo XML salvo com o recurso de log.

Listagem 9. Boto [Desativar Log] Desativar recurso de log das alteraes feitas nos dados..

procedure TForm1.btnDesativarLogClick(Sender: TObject);

begin // Desativar Log. CDS.LogChanges := False; end;

Leia mais em: ClientDataSet Gerando Tabela Temporria em Memria http://www.devmedia.com.br/clientdataset-gerando-tabelatemporaria-em-memoria/3193#ixzz2sIix18gj