Classe e função pra carregar XML
Moderador: Moderadores
Classe e função pra carregar XML
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.
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
Classe e função pra carregar XML
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
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
lugab
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Classe e função pra carregar XML
Geralmente é o explorer:
Código: Selecionar todos
RUN START arquivo.xml
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Classe e função pra carregar XML
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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Classe e função pra carregar XML
Olá, Quintas,
O PROCEDURE PTES0190 deu erro de "not exported Method GETHWND" e eu nem experimentei...
Mas o RUN START funcionou...
Obrigado
O PROCEDURE PTES0190 deu erro de "not exported Method GETHWND" e eu nem experimentei...
Mas o RUN START funcionou...
Obrigado
lugab
Classe e função pra carregar XML
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!
Como faço?
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?
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Classe e função pra carregar XML
Quintas,
Encontrei as funções no link que vc disponibilizou!
Mim virando aqui... hehehe
Por enquanto dando certo
Encontrei as funções no link que vc disponibilizou!
Mim virando aqui... hehehe
Por enquanto dando certo
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Classe e função pra carregar XML
Quintas,
Nessa parte:
? 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
Nessa parte:
Como eu vou pegar os dados do produto?FOR EACH oProduto IN ( oDoc: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
"Eu e minha casa servimos ao Senhor e você
"
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Classe e função pra carregar XML
Código: Selecionar todos
FOR nCont = 1 TO Len( oDoc:Produto )
? oDoc:Produto[ nCont ]:Código
? oDoc:produto[ nCont ]:Nome
NEXT
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
...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Classe e função pra carregar XML
Pegando os produtos!
E assim vai puxando os campos de acordo com a sua necessidade!
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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Classe e função pra carregar XML
Bom dia...
Certo... a classe tá instanciada e alimentada.
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
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
? 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
"Eu e minha casa servimos ao Senhor e você
"
Classe e função pra carregar XML
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:
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
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Classe e função pra carregar XML
Uma exigência do FOR/EACH é que a variável seja local.
A variável declarada será equivalente a um elemento do array.
No exemplo acima, oProduto equivale a aProdutosLst[ n ]
No caso da classe, equivale às informações de um produto.
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 caso da classe, equivale às informações de um produto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- rubens
- Colaborador

- Mensagens: 1520
- Registrado em: 16 Ago 2003 09:05
- Localização: Nova Xavantina - MT
Classe e função pra carregar XML
Fechou Quintas...
Declare local oProduto e depois peguei oProduto:Nome ...
Obrigado
Rubens
Declare local oProduto e depois peguei oProduto:Nome ...
Obrigado
Rubens
"Eu e minha casa servimos ao Senhor e você
"
Classe e função pra carregar XML
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
Nilton Medeiros
nilton@sistrom.com.br
nilton@sistrom.com.br
