Importando XML para Firebird
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
porfavor alguem me ajude..Aguardo
Rodrigo Bernal
Curtidas 0
Melhor post
Claudia Nogueira
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.
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.
GOSTEI 1
Mais Respostas
Claudia Nogueira
15/11/2012
Pode passar a estrutura desse XML?
Só copiar uma parte dele e postar aqui.
Só copiar uma parte dele e postar aqui.
GOSTEI 0
Rodrigo Bernal
15/11/2012
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
<?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
GOSTEI 0
Carlos Bernardo
15/11/2012
Tentou carregar ele pelo ClientDataSet, propriedade FileName?
GOSTEI 0
Rodrigo Bernal
15/11/2012
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...
OU EXPORTAR PARA O EXCELL E DEPOIS JOGAR NO BANCO...
GOSTEI 0
Rodrigo Bernal
15/11/2012
BOM DIA SIM CLAUDIA TENHO
GOSTEI 0
Carlos Bernardo
15/11/2012
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...
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...
GOSTEI 0
Carlos Bernardo
15/11/2012
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...
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;
GOSTEI 0
Claudia Nogueira
15/11/2012
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.
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;
GOSTEI 1