Página 2 de 4
Classe e função pra carregar XML
Enviado: 08 Set 2016 11:12
por NiltonGM
O Lugab, vc quer abrir de dentro da aplicação? Se for isso aí só com o mestre Zeh que é fera em xml, quando apenas quero ver o conteúdo do xml abro no navegador Chrome que ele formata o xml, também tem um plugin para o editor de texto Notepad++ pra formatar xml e json.
Classe e função pra carregar XML
Enviado: 08 Set 2016 18:50
por lugab
Isso mesmo, Nilton, só preciso q o meu programa exiba o xml.
Dando run no Wordpad e no Winword eu já testei e eles não conseguem , então, que seja por algum código compilável
onde a gente só passe o caminho e o nome do xml
Classe e função pra carregar XML
Enviado: 08 Set 2016 19:12
por JoséQuintas
Classe e função pra carregar XML
Enviado: 08 Set 2016 19:27
por JoséQuintas
Não sei se dá pra chamar de mais sofisticado, mas foi só um teste rápido, não apareceram as barras de rolagem, mas virou janela do aplicativo:
Código: Selecionar todos
PROCEDURE PTES0190
LOCAL oControl
CLS
oControl := wvgActivexControl():New(,, { -1, -1 }, { -MaxRow() + 1, -MaxCol() + 1 } )
oControl:CLSID := "\\serverjpa\inetpub\wwwroot\xmlpdf\xxx\xxx.XML"
oControl:Create()
Inkey(0)
RETURN
Classe e função pra carregar XML
Enviado: 09 Set 2016 09:49
por lugab
Olá, Quintas,
O PROCEDURE PTES0190 deu erro de "not exported Method GETHWND" e eu nem experimentei...
Mas o RUN START funcionou...
Obrigado
Classe e função pra carregar XML
Enviado: 15 Out 2016 08:55
por janio
Quintas,
Achei bem interessante essas funções para leitura de xml e as pretendo usar para LER e IMPORTAR xml de fornecedores, apesar de eu pouco saber trabalhar com classes! Não eh o meu forte hehehe
Para fazer testes, peguei os códigos que vc aqui postou (mim interessa apenas a parte de LER um xml de fornecedores), mas ao compilar deu falta de muitas funções!
hbmk2: Erro: Referenciado, faltando, mas fun‡äes desconhecida(s):
XMLTODOCCTEEMI(), XMLTODOCMDFEEMI(), XMLTODOCNFECANCEL(),
XMLTODOCCTECANCEL(), XMLTODOCNFECCE(), XMLTODOCMDFECANCEL(),
XMLTODOCMDFEENC(), SONUMEROS(), CALCULADIGITO(), VALIDCNPJCPF(),
XMLNODE(), XMLELEMENT(), XMLDATE()
Como faço?
Classe e função pra carregar XML
Enviado: 15 Out 2016 13:53
por janio
Quintas,
Encontrei as funções no link que vc disponibilizou!
Mim virando aqui... hehehe
Por enquanto dando certo
Classe e função pra carregar XML
Enviado: 23 Nov 2016 20:04
por rubens
Quintas,
Nessa parte:
FOR EACH oProduto IN ( oDoc:Produto )
Como eu vou pegar os dados do produto?
? oNfe:Produto[ nCont ]:Nome
não tô visualizando isso. oDoc:Produto se refere a classe produto dentro do documento né? Só que aí Eu preciso pegar nome dentro de produto, que quando foi salvo foi identificado por nCont, agora para recuperar como fica essa identificação do nCont? Com o FOR EACH ele pula automático, não preciso identificar a posição ?
Obrigado,
Rubens
Classe e função pra carregar XML
Enviado: 23 Nov 2016 22:51
por JoséQuintas
Código: Selecionar todos
FOR nCont = 1 TO Len( oDoc:Produto )
? oDoc:Produto[ nCont ]:Código
? oDoc:produto[ nCont ]:Nome
NEXT
ou
Código: Selecionar todos
FOR EACH oElemento IN oDoc:Produto
? oElemento:Código
? oElemento:Nome
NEXT
Código: Selecionar todos
CREATE CLASS NfeProdutoClass
VAR Codigo INIT ""
VAR Nome INIT ""
VAR CfOp INIT ""
VAR NCM INIT ""
VAR GTIN INIT ""
VAR Anp INIT ""
VAR Unidade INIT ""
VAR Qtde INIT 0
VAR ValorUnitario INIT 0
VAR ValorTotal INIT 0
...
Classe e função pra carregar XML
Enviado: 24 Nov 2016 00:37
por janio
Pegando os produtos!
Código: Selecionar todos
oNfe := XmlToDoc( MemoRead( cArq ) )
FOR EACH oProduto IN ( oNfe:Produto )
? oProduto:Nome
? oProduto:Codigo
? oProduto:GTIN
? oProduto:GTINt
? oProduto:Qtde
? oProduto:ValorUnitario
? oProduto:ValorTotal
? oProduto:NCM
? oProduto:CEST
? oProduto:ValorDesconto
? oProduto:CFOP
? oProduto:IcmsSt:Base
? oProduto:IcmsSt:Aliquota
? oProduto:IcmsSt:Valor
? oProduto:Icms:Cst
? oProduto:Ipi:Valor
? oProduto:Ipi:Aliquota
NEXT
E assim vai puxando os campos de acordo com a sua necessidade!
Classe e função pra carregar XML
Enviado: 24 Nov 2016 08:15
por rubens
Bom dia...
Certo... a classe tá instanciada e alimentada.
Código: Selecionar todos
cCGC := oNfe:Emitente:Cnpj
cNOME := oNfe:Emitente:Nome
*cFantasia := oNfe:Emitente:Fantasia // Implementar na classe
cEndereco := oNfe:Emitente:Endereco
cNumero := oNfe:Emitente:Numero
cBairro := oNfe:Emitente:Bairro
cCidadeCod := oNfe:Emitente:CidadeIbge
cCidade := oNfe:Emitente:Cidade
cEstado := oNfe:Emitente:Uf
cCep := oNfe:Emitente:Cep
cInsc_Est := oNfe:Emitente:InscricaoEstadual
cTelefone1 := oNfe:Emitente:Telefone
cCrtEmit := ''
cTelefone1 := Transform( Val( cTelefone1 ), '( 99)9999-9999' )
For EACH oProduto IN ( oNfe:Produto )
cNompro_ := oProduto:Nome
cCodBarra := oProduto:GTIN
nQtde_ := oProduto:Qtde
nValor_ := oProduto:ValorUnitario
nTotal_ := oProduto:ValorTotal
cUnd_ := oProduto:Unidade
Next
Pego qualquer variável da nota... essa parte aí do emitente tá certinho e tal.
? oNfe:Produto[1]:Nome - Retorna o nome certinho, então se usar o for x/next funciona.
Tô apanhado do FOR EACH (boa oportunidade para aprender usar, porque está dentro do contexto)
Se não declaro oProduto dá erro na hora da execussão - não encontrado
Se declaro Private oProduto, não dá mas retorna tipo U.
O FOR EACH não seria traduzido assim: Enquanto for encontrado oProduto em oNfe:Produto? Mas o oProduto veio de onde? (me desculpem minha ignorância) dei uma olhada nos tópicos sobre o FOR EACH, mas mesmo assim não consegui visualizar nesse caso.
Obrigado
Rubens
Classe e função pra carregar XML
Enviado: 24 Nov 2016 09:30
por janio
Eh a primeira vez que
For Each tbm... e ate mim parece mais simples que
For... Next
Mas se vc quiser usar o for... next, pode tbm:
Código: Selecionar todos
FOR nCont = 1 TO Len( oNfe:Produto )
? oNfe:Produto[ nCont ]:Código
? oNfe:produto[ nCont ]:Nome
NEXT
Classe e função pra carregar XML
Enviado: 24 Nov 2016 11:21
por JoséQuintas
Uma exigência do FOR/EACH é que a variável seja local.
A variável declarada será equivalente a um elemento do array.
Código: Selecionar todos
LOCAL aProdutosLst, oProduto
aProdutosLst := { "PANETONE", "CASTANHA", "PERU", "ARVORE", "PRESENTE" }
FOR EACH oProduto IN aProdutosLst
? oProduto
NEXT
No exemplo acima, oProduto equivale a aProdutosLst[ n ]
No caso da classe, equivale às informações de um produto.
Classe e função pra carregar XML
Enviado: 24 Nov 2016 15:32
por rubens
Fechou Quintas...
Declare local oProduto e depois peguei oProduto:Nome ...
Obrigado
Rubens
Classe e função pra carregar XML
Enviado: 12 Dez 2016 08:59
por NiltonGM
Estou usando e abusando das novas no Harbour como WITH OBJECT, SWITCH, o FOR EACH, esses comandos são ótimos e substitui muito os tradicionais na maioria dos casos sem falar que podemos criar classes pra tudo...
Código: Selecionar todos
FOR EACH xVar IN <array, string, etc>
.... xVar
NEXT EACH
WITH OBJECT <oBjeto>
? :FieldGet(x)
SWITCH :FieldGet('cf_tipo')
CASE 1
.... ; EXIT
CASE 2
..... ; EXIT
OTHERWISE
END SWITCH
END WITH