Corrigindo o Post Errado (Problemas com o XMLDocument)

04/06/2008

1

O tópico de cima está meio errado!!!estou postando o correto!!!

Olá...gostaria de gerar algo do tipo!
<cobranca>
   <fatura>
  <numero>1</numero> 
  <valorOriginal>4444,00</valorOriginal> 
  <valorDesconto>0</valorDesconto> 
  <valorLiquido>4444,00</valorLiquido> 
   </fatura>
   <duplicata>
  <numero>1/A</numero> 
  <vencimento>2008-06-15</vencimento> 
  <valor>2222,00</valor> 
   </duplicata>
   <duplicata>
  <numero>1/B</numero> 
  <vencimento>2008-06-30</vencimento> 
  <valor>2222,00</valor> 
   </duplicata>
 </cobranca>


porém quando faço isso com o componente ele só pega o último valor da duplicata!!!

o meu código está desta forma!!!


procedure TF_Nfe.BitBtn1Click(Sender: TObject);
var
   xml : TXMLDocument;
   no_cobranca   : IXMLNode;

begin
   xml:=TXMLDocument.Create(nil);
   xml.Active:=TRUE;

   no_cobranca:=xml.DocumentElement.AddChild(´cobranca´);

   no_cobranca.ChildNodes[´fatura´].ChildNodes[´numero´].NodeValue:=edCobNumNF.Text;
   no_cobranca.ChildNodes[´fatura´].ChildNodes[´valorOriginal´].NodeValue:=edCobValorTotal.Text;
   no_cobranca.ChildNodes[´fatura´].ChildNodes[´valorDesconto´].NodeValue:=edCobDesconto.Text;
   no_cobranca.ChildNodes[´fatura´].ChildNodes[´valorLiquido´].NodeValue:=edCobVlLiquido.Text;

   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´numero´].NodeValue:=edCobDuplicata1.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´vencimento´].NodeValue:=edCobVencto1.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´valor´].NodeValue:=edCobParValor1.Text;

   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´numero´].NodeValue:=edCobDuplicata2.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´vencimento´].NodeValue:=edCobVencto2.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´valor´].NodeValue:=edCobParValor2.Text;

   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´numero´].NodeValue:=edCobDuplicata3.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´vencimento´].NodeValue:=edCobVencto3.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´valor´].NodeValue:=edCobParValor3.Text;

   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´numero´].NodeValue:=edCobDuplicata4.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´vencimento´].NodeValue:=edCobVencto4.Text;
   no_cobranca.ChildNodes[´duplicata´].ChildNodes[´valor´].NodeValue:=edCobParValor4.Text;


   empresa:=cbCodEmpresa.Items[cbCodEmpresa.ItemIndex];
   nome_arquivo:=´G:\NotaNet\nfe\nota\´+empresa+´_´+edNumeroNF.Text+´.xml´;
   xml.SaveToFile(nome_arquivo);

   xml.Active:=False;
   xml:=nil;

end;



com esse código ele gera tudo corretamente, apenas quando existe repetição igual no caso da duplicata.....ou se houver vários produtos...quando é 1 só ele gera normal...certinho!!!
É claro que ae só estão as informações de fatura da nota fiscal...tem o corpo da nota, cabeçalho, rodapé....tudo certinho...
desde já obrigado!!

o resultado do código acima é o seguinte:

<cobranca>
   <fatura>
  <numero>1</numero> 
  <valorOriginal>4444,00</valorOriginal> 
  <valorDesconto>0</valorDesconto> 
  <valorLiquido>4444,00</valorLiquido> 
   </fatura>
   <duplicata>
  <numero>1/B</numero> 
  <vencimento>2008-06-30</vencimento> 
  <valor>2222,00</valor> 
   </duplicata>
 </cobranca>



o problema correto é que não consigo repetir uma mesma tag!!!

se tenho q repetir

<duplicata>
<numero>1/A</numero>
</duplicata>
<duplicata>
<numero>1/B</numero>
</duplicata>

eu naum consigo!!!o componente que estou usando é o XMLDocument!!!! então tudo ae gira em torno desse componente!!


Responder

Posts

05/06/2008

Uzumaki_naruto

subido o tópico


Responder

05/06/2008

Uzumaki_naruto

opa...consegui descobrir....


quando ouver esse tipo de repetição como em duplicatas, nota fiscal e pedidos eu tenho q usar ao invés dessa forma:

 no_cobranca:=xml.DocumentElement.AddChild(´cobranca´);

   no_cobranca.ChildNodes[´fatura´].ChildNodes[´numero´].NodeValue:=edCobNumNF.Text;
   no_cobranca.ChildNodes[´fatura´].ChildNodes[´valorOriginal´].NodeValue:=edCobValorTotal.Text;
   no_cobranca.ChildNodes[´fatura´].ChildNodes[´valorDesconto´].NodeValue:=edCobDesconto.Text;
   no_cobranca.ChildNodes[´fatura´].ChildNodes[´valorLiquido´].NodeValue:=edCobVlLiquido.Text;




esta forma aqui:

 no_notafiscal:=xml.Node.AddChild(´NotaFiscal´);
  no_cobranca:=xml.DocumentElement.AddChild(´cobranca´);

  for i:=1 to 4 do begin
      no_cobranca.AddChild(´fatura´).ChildNodes[´numero´].NodeValue:=edit.text
  end;



Responder

05/06/2008

Uzumaki_naruto

ou assim ainda

no_cobranca.AddChild(´fatura´).ChildNodes[´numero´].NodeValue:=inttostr(1);

no_cobranca.AddChild(´fatura´).ChildNodes[´numero´].NodeValue:=inttostr(2);

no_cobranca.AddChild(´fatura´).ChildNodes[´numero´].NodeValue:=inttostr(3);

no_cobranca.AddChild(´fatura´).ChildNodes[´numero´].NodeValue:=inttostr(4);
[/code]


Responder