MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access


2 participantes

    [Resolvido]Exportar dados de consulta para XML

    avatar
    mrjoneskod
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 35
    Registrado : 17/09/2013

    [Resolvido]Exportar dados de consulta para XML Empty [Resolvido]Exportar dados de consulta para XML

    Mensagem  mrjoneskod Qui 14 Jan - 20:43

    Olá amigos, estou tentando criar um script que exporte os dados de uma consulta para um XML.
    O porém é que campos nulos devem ser omitidos.

    Por exemplo se um registro contém o CPF da pessoa, mas não o endereço, então o XML deve omitar a tag endereço ().

    Eu vi várias maneiras de criar isso, mas nenhuma que considerasse isso.
    Outra coisa era o nome do arquivo, eu queria que o Nome do arquivo fosse uma composição do Número do Registro mais a série mais a data

    Tipo assim 0000001-ABCDF-14-01-2016.xml

    Bom estou quebrando a cabeça mas não consegui ainda.
    O que estou fazendo é um programa para gerenciar um estacionamento e tem que emitir RPS a cada cliente.

    Para essa emissão preciso gerar o XML. Depois tem um programa de terceiro que envia e retorna a mensagem com o sucesso ou erro e cópia o arquivo para uma outra pasta de acordo com o resultado.

    Queria saber se é possível o Access ler essa outra pasta "Esperando o arquivo entrar" para marcar um status tipo, enviado ou erro, de acordo com a resposta.


    Um exemplo que encontrei e que me parece o melhor foi esse:
    Código:
    Public Function Export()
    Dim bd As Database
    Dim tabela As Recordset  2000
    Dim f As Integer

     Set bd = CurrentDb
     Set tabela = bd.OpenRecordset("nome_da_tabela_para_exportar")
    ' utilizado FreeFile para fornecer um número de arquivo livre, que não esteja sendo usado
     f = FreeFile
    ' abre o arquivo para gravacao
     Open "caminho_completo_do_arquivo.xml"
     For Output As #f
    ' o inicio de um arquivo XML possui o plural dos registros do arquivo
     Print #f, "<?xml version='1.0' encoding='iso-8859-1'?>"
     Print #f, "<LOTE>"
     Print #f, "<REGISTROS>" tabela.MoveFirst

    ' faz o loop percorrendo todos os registros do inicio ao fim da tabela
     Do While Not tabela.EOF
    ' escreve uma tab XML para indicar que estamos no comeco de um novo registro
     Print #f, "<REGISTRO>"
     Print #f, "<TAG1>" & tabela!campo_da_tabela & "</TAG1>"
     Print #f, "<TAG2>" & tabela!campo_2 & "</TAG2>"
     Print #f, "<TAG3>" & tabela!campo_3 & "</TAG3>" . . .
     Print #f, "<TAGn>" & tabela!campo_n & "</TAGn>"
    ' fecha a tag para este registro
     Print #f, "</REGISTRO>"
    ' vai para o proximo registro da tabela tabela.
     MoveNext Loop
    ' encerra o arquivo xml
    Print #f, "</REGISTROS>"
    Print #f, "</LOTE>"
    ' fecha o arquivo

     Close #f
    End Function

    O problema aqui é que ele coloca as tags dos campos nulos e isso já pesquisei e vai dar erro no envio da RPS.

    Aguardo a ajuda de vocês!
    Obrigado mais uma vez.


    Última edição por mrjoneskod em Qua 23 Mar - 14:37, editado 1 vez(es)
    Alvaro Teixeira
    Alvaro Teixeira
    Moderador Global
    Moderador Global


    Respeito às regras : Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 7914
    Registrado : 15/03/2013

    [Resolvido]Exportar dados de consulta para XML Empty Re: [Resolvido]Exportar dados de consulta para XML

    Mensagem  Alvaro Teixeira Sex 15 Jan - 9:34

    Olá Lucas,
    Quanto aos campos nulos acho que será fácil controlar do tipo:

    If len(tabela!campo &"") > 0 then Print #f, "" & tabela!campo_2 & ""

    Quanto à composição do nome do ficheiro não será problema, no entanto se gerar duas vezes o ficheiro xml na mesma data com o mesmo número de registos, vai ter que ajustar código.

    Esse exemplo que postou ainda não foi trabalhado, mãos à obra.

    Qualuer coisa estamos cá.
    Abraço

      Data/hora atual: Qui 28 Mar - 14:23