Problema ao gerar mais de 1 XML

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Tadeu
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 10 Nov 2011 04:29
Localização: Manaus/AM

Problema ao gerar mais de 1 XML

Mensagem por Tadeu »

Olá Pessoal,

Mais uma vez preciso da ajuda de vocês..... Estou gerando o XML para atender a NFS-e, e já consegui gerar o XML e o mesmo ser validado no site da prefeitura. No entanto considerando que o arquivo gerado não pode ter mais de 50 registros, tive que fazer a quebra e gerar mais de um XML.

Estou tendo um problema sempre com o segundo XML que estou gerando. O primeiro XML o validador do site reconhece sem nenhum problema, mas o segundo esta retornando problema de estrutura, como se houvesse problema no layout do arquivo..

Acredito que seja algum detalhe que precise ser feito quando vou gerar esse segundo XML, mas ainda não descobri o que pode ser....

Estou gerando o XML da seguinte maneira :

Arquivo := "rps1.xml"
If (nHandle := Fcreate(Arquivo)) = - 1
.... Mensagem de erro
Else
Set Devi to Print
Set Printer to &Arquivo.

E no Final para :

Set Devi to screen
Fclose(nHandle)

.....

Esse processo se repete para a criação do segundo XML, e não sei por que ao gerar o segundo a estrutura de acordo com o validador não está correta.


Se alguém tiver alguma dica que possa me dar uma Luz, agradeço muito.....

Mais uma vez, obrigado...

Abraços,

Tadeu
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Problema ao gerar mais de 1 XML

Mensagem por alxsts »

Olá!

A primeira coisa que notei no código postado, é que você está misturando duas coisas:

você deve optar por gravar usando as funções de baixo nível (FCreate(), FOpen(), FWrite(), FClose()) ou por gravar usando o comando SET PRINTER TO (cArquivo), que já cria o arquivo cArquivo, e SET PRINTER TO que fecha cArquivo. Nunca os dois juntos.

No teu exemplo, o FCreate() está criando um arquivo e depois o SET PRINTER TO &Arquivo está criando outro arquivo com o mesmo nome.

Retire o FCreate() e ao término da geração de cada arquivo, feche o arquivo gerado com SET PRINTER TO.
[]´s
Alexandre Santos (AlxSts)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Problema ao gerar mais de 1 XML

Mensagem por Pablo César »

A solução está em utilizar o FCREATE, FOPEN, FCLOSE, FWRITE (funções de baixo nível) como já disse o colega. Neste tópico aborda esse assunto e tem um exemplo para referência: https://pctoledo.org/forum/viewto ... 802#p52802 que espero que ajude.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Tadeu
Usuário Nível 1
Usuário Nível 1
Mensagens: 18
Registrado em: 10 Nov 2011 04:29
Localização: Manaus/AM

Problema ao gerar mais de 1 XML

Mensagem por Tadeu »

Olá pessoal,

Fiz as alterações, retirando o Fcreate(), mas o problema persiste.... O interessante é que o primeiro arquivo que a rotina está gerando está OK, quando faço a criação do segundo ai dá erro na estrutura do arquivo...

Rotina geração do XML :
Rotina Geracao XML.txt
Arquivo Geração XML
(48.06 KiB) Baixado 119 vezes
Estou anexando a rotina que gera o XML ( a ideia da rotina é gerar ate 4 XML caso eu tenha o numero de 200 registros para informar, ou seja, uma quebra de 50 por arquivos)...

Se voces puderem dar uma olhada e ver se existe algo mais que posso estar esquecendo eu agradeço...


Valeu mais uma vez pela ajuda...

Um grande abraço...

Tadeu
Responder