News & Events
Criando, lendo e inserindo dados de um BD Firebird em um XML
- 14 de setembro de 2007
- Posted by: Adriano Santos
- Category: clientdataset delphi delphi2006 delphi2007 dicas xml
Olá pessoal,
Pra quem tem dúvidas na criação e utilização de arquivos XML no Delphi criei um pequeno exemplo demonstrando o esquema.
No exemplo criei uma conexão DBExpress com o banco Employee, tabela Customer, do banco de exemplo do Firebird e inseri em um arquivo chamado Temporario.xml. Para acessar o xml o esquema é bem simples. Basta :
Inserir um ClientDataSet na tela.
Clicar duas vezes nele.
No Fields Editor clique com o direito e depois em New field.
Crie o field e confirme. Repita estes passos até inserir todos os campos desejados.
Por fim clique com o direito no ClientDataSet e selecione Create dataset.
Em seguida clique novamente com o direito e selecionar Save to MyBase XML Table.
Salve o arquivo XML na pasta que desejar.
Pronto, você está trabalhando com XML, agora é só incluir um DataSource e conectar seus componentes visuais a ele.
No exemplo que fiz, estou criando tudo em tempo de execução, conforme a Listagem abaixo.
Este é o evento onClick do botão, onde a estrutura do arquivo é criada e os dados da tabela Customer é enviada para o cdsTemporario, consequentemente o TEMPORARIO.XML.
procedure TForm1.Button1Click(Sender: TObject);
var
sArqTemporario : String;
begin
{Cria a Estrutura do arquivo temporario.xml}
sArqTemporario := ExtractFilePath(Application.ExeName) + 'Temporario.xml';
cdsTemporario.Close;
with cdsTemporario, FieldDefs do
begin
Clear;
Add('CUST_NO', ftInteger);
Add('CUSTOMER', ftString, 25, False);
Add('CONTACT_FIRST', ftString, 15, False);
Add('CONTACT_LAST', ftString, 20, False);
with IndexDefs do
begin
Clear;
Add('INDICE1', 'CUST_NO', [ixPrimary, ixUnique]);
end;
if FileExists(ExtractFilePath(Application.ExeName) + 'Tempoario.xml') then
DeleteFile(ExtractFilePath(Application.ExeName) + 'Tempoario.xml');
CreateDataSet;
SaveToFile(ExtractFilePath(Application.ExeName) + 'Tempoario.xml');
LoadFromFile(ExtractFilePath(Application.ExeName) + 'Tempoario.xml');
end;
{Abre a Conexão}
SQLConnection1.Connected := True;
ClientDataSet1.Open;
{Insere os dados no Tempoario.xml}
with ClientDataSet1 do
begin
while not EOF do
begin
cdsTemporario.Insert;
cdsTemporario.FieldByName('CUST_NO').AsInteger := FieldByName('CUST_NO').AsInteger;
cdsTemporario.FieldByName('CUSTOMER').AsString := FieldByName('CUSTOMER').AsString;
cdsTemporario.FieldByName('CONTACT_FIRST').AsString := FieldByName('CONTACT_FIRST').AsString;
cdsTemporario.FieldByName('CONTACT_LAST').AsString := FieldByName('CONTACT_LAST').AsString;
cdsTemporario.Post;
Next;
end;
end;
end;
Baixe o exemplo completo na seção Downloads.
Siga @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.
Siga também o autor @asrsantos
Nesse exemplo eu preciso usar dois clientDataSet?
meu email é paulo.assis@ledware.com.br
Ola, muito bom o tutorial, mas eu tenho uma dúvida, eu preciso que depois que é criado o xml com os dados do banco, caso eu queira add + dados por exemplo: tabela pais gerou um xml com os dados BRASIL, ARGENTINA, URUGUAI. depois eu quero add mais dados, eu quero abrir ele e inserir COLOMBIA E PARAGUAI, sem precisar apagar os que ja existiam.
Desde já agradeço sua atenção
meu email paulinhohps09@gmail.com