GARANTIR DESCONTO

Fórum Importando XML para Firebird #428824

15/11/2012

0

Pessoal tenho uma aplicação em firebird 2.1 delphi7, preciso importar dados de um arquivo xml para dentro do firebird, são mais de 4500 produtos de um supermercado, não sei nem por onde começar, verifiquei pelo ibexpert mais não consegui,
porfavor alguem me ajude..Aguardo
Rodrigo Bernal

Rodrigo Bernal

Responder

Post mais votado

19/11/2012

Oie, desculpa a demora.
Você já tem o banco de dados em Firebird e com a tabela na mesma estrutura?
Me fala isso que daí te passo um código simples aqui pra gravar no banco.

Claudia Nogueira

Claudia Nogueira
Responder

Gostei + 1

Mais Posts

16/11/2012

Claudia Nogueira

Pode passar a estrutura desse XML?
Só copiar uma parte dele e postar aqui.
Responder

Gostei + 0

16/11/2012

Rodrigo Bernal

O Claudia Vai ai
<?xml version="1.0" standalone="true"?>
-<Produtos> -<Produto ProdutoID="0"> <Codigo>00000000000000001</Codigo> <Descritivo>PAO FRANCES KG F.P. </Descritivo> <PrecoUnitario>5,99</PrecoUnitario> <Totalizador>09</Totalizador> <Pesado>1</Pesado> <Departamento>015</Departamento> <Plu>0</Plu> <Preco2>0</Preco2> <Preco3>0</Preco3> <Preco4>0</Preco4> <IMEI>0</IMEI> <ICCID>0</ICCID> </Produto> -<Produto ProdutoID="1"> <Codigo>00000000000000002</Codigo> <Descritivo>TOMATE DEBORA kg </Descritivo> <PrecoUnitario>2,59</PrecoUnitario> <Totalizador>05</Totalizador> <Pesado>1</Pesado> <Departamento>011</Departamento> <Plu>0</Plu> <Preco2>0</Preco2> <Preco3>0</Preco3> <Preco4>0</Preco4> <IMEI>0</IMEI> <ICCID>0</ICCID>

segue ai
Responder

Gostei + 0

18/11/2012

Carlos Bernardo

Tentou carregar ele pelo ClientDataSet, propriedade FileName?
Responder

Gostei + 0

19/11/2012

Rodrigo Bernal

BLZ CARLOS JA CARREGUEI PELO CLIENTDATASET MAIS TO COM DIFICULDADE PARA JOGAR ISSO PARA DENTRO DO MEU BANCO DE DADOS..
OU EXPORTAR PARA O EXCELL E DEPOIS JOGAR NO BANCO...
Responder

Gostei + 0

20/11/2012

Rodrigo Bernal

BOM DIA SIM CLAUDIA TENHO
Responder

Gostei + 0

20/11/2012

Carlos Bernardo

Amigo, eu faço isso com um loop...

Ex:.
CDS_TABLE.OPEN;
CDS_XML.OPEN;
CDS_XML.FIRST;
WHILE NOT CDS_XML.EOF DO
BEGIN
CDS_TABLE.APPEND;
CDS_TABLE.FIELDBYNAME('CAMPO1').ASINTEGER := CDS_TABLE.FIELDBYNAME('CAMPO1').ASINTEGER ;
CDS_TABLE.FIELDBYNAME('CAMPO2').ASSTRING := CDS_TABLE.FIELDBYNAME('CAMPO2').ASSTRING ;
CDS_TABLE.FIELDBYNAME('CAMPO3').VALUE := CDS_TABLE.FIELDBYNAME('CAMPO3').VALUE ;
CDS_TABLE.POST;
CDS_TABLE.APPLYUPDATES(0);
CDS_XML.NEXT;
END;

Pode ser que exista outra forma, mas eu faço assim...

Responder

Gostei + 0

20/11/2012

Carlos Bernardo

Amigo, eu faço isso com um loop...

Ex:.
CDS_TABLE.OPEN;
CDS_XML.OPEN;
CDS_XML.FIRST;
WHILE NOT CDS_XML.EOF DO
BEGIN
CDS_TABLE.APPEND;
CDS_TABLE.FIELDBYNAME('CAMPO1').ASINTEGER := CDS_TABLE.FIELDBYNAME('CAMPO1').ASINTEGER ;
CDS_TABLE.FIELDBYNAME('CAMPO2').ASSTRING := CDS_TABLE.FIELDBYNAME('CAMPO2').ASSTRING ;
CDS_TABLE.FIELDBYNAME('CAMPO3').VALUE := CDS_TABLE.FIELDBYNAME('CAMPO3').VALUE ;
CDS_TABLE.POST;
CDS_TABLE.APPLYUPDATES(0);
CDS_XML.NEXT;
END;

Pode ser que exista outra forma, mas eu faço assim...





Xi falha nossa, ele recebe do CDS_XML


CDS_TABLE.OPEN;
CDS_XML.OPEN;
CDS_XML.FIRST;
WHILE NOT CDS_XML.EOF DO
BEGIN
CDS_TABLE.APPEND;
CDS_TABLE.FIELDBYNAME('CAMPO1').ASINTEGER := CDS_XML.FIELDBYNAME('CAMPO1').ASINTEGER ;
CDS_TABLE.FIELDBYNAME('CAMPO2').ASSTRING := CDS_XML.FIELDBYNAME('CAMPO2').ASSTRING ;
CDS_TABLE.FIELDBYNAME('CAMPO3').VALUE := CDS_XML.FIELDBYNAME('CAMPO3').VALUE ;
CDS_TABLE.POST;
CDS_TABLE.APPLYUPDATES(0);
CDS_XML.NEXT;
END;
Responder

Gostei + 0

20/11/2012

Claudia Nogueira

Oie, faço parecido com o que o coleta digitou.
1 IbDataBase
1 IbTransaction
1 IbTable (ligada na tabela que vai receber as informações do ClientDataSet com mesma estrutura)
1 ClientDataSet que está ligado ao XML.

Var
  i : Integer;
begin
  IBTable1.Close;
  IBTable1.Open;
  ClientDataSet1.Close;
  ClientDataSet1.Open;
  ClientDataSet1.First;
  while not ClientDataSet1.Eof do
  begin
    IBTable1.Insert;
    for i := 0 to ClientDataSet1.FieldCount - 1 do
      IBTable1.FieldByName(ClientDataSet1.Fields[i].FieldName).Value := ClientDataSet1.FieldByName(ClientDataSet1.Fields[i].FieldName).Value;
    IBTable1.Post;
    ClientDataSet1.Next;
  end;
  IBTransaction1.CommitRetaining;
end;
Responder

Gostei + 1

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar