icefusion 0 Denunciar post Postado Junho 3, 2008 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> Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Junho 3, 2008 Mas o fonte que você tem postado, não parece gerar a estrutura que deseja, visto que você referência fatura mas esta criando nodos de duplicata. Compartilhar este post Link para o post Compartilhar em outros sites
icefusion 0 Denunciar post Postado Junho 4, 2008 Mas o fonte que você tem postado, não parece gerar a estrutura que deseja, visto que você referência fatura mas esta criando nodos de duplicata. opa...desculpe..eu havia colocado errado...ja o corrigi!!! mas 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!! Compartilhar este post Link para o post Compartilhar em outros sites
icefusion 0 Denunciar post Postado Junho 5, 2008 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; ou assim 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); Compartilhar este post Link para o post Compartilhar em outros sites