Ir para conteúdo
  • Cadastre-se

dev botao

Salvar XML em campo blob no banco Firebird 2.5


Ver Solução Respondido por Jean Peixoto,
  • Este tópico foi criado há 307 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Pessoal, 

Estou tendo um problema para gravar o xml em um banco firebird 2.5, campo do tipo Blob! É apenas um xml específico, com 241.411 caracteres, ou 237kb, não é lá grande assim né

porém está dando erro ao ser inserido em uma SQL para gravar no banco. Outros arquivos xml gravam tranquilo... agora esse não vai.

Estou utilizando a seguinte rotina:

Query.SQL.Clear;
Query.SQL.Add('update MANIFESTO');
Query.SQL.Add('SET XMLNOTA = :VALOR') ;
Query.ParamByName('VALOR').AsString := QuotedStr( FACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].XML );
Query.SQL.Add('WHERE CHAVE = ' + QuotedStr(sChave) );
Query.ExecSQL;

Percebi que se posiciono o Mouse no campo  FACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].XML , ele não mostra todo o conteúdo do arquivo XML, fica um uma reticencias (...)  no final

Já tentei de outra forma, a linha que jogo o valor para o parâmetro, mais não grava nada quando faço das formas abaixo!

Já tentei assim:
Query.ParamByName('VALOR').AsString := FACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].XML;

e Assim:
Query.ParamByName('VALOR').AsString := UTF8Encode( FACBrNFe.WebServices.DistribuicaoDFe.retDistDFeInt.docZip.Items[i].XML);

Porém sem sucesso!

sabem o que pode ser?

Link para o comentário
Compartilhar em outros sites

  • Consultores

pelo que vc comenta a mesma rotina funciona com outros XML normalmente?
verifique se o XML não possui algum caracter especial ou aspas que possa interferir.
se puder postar o arquivo e/ou a mensagem de erro tbm fica mais fácil pra gente ajudar.

1 hora atrás, Jean Peixoto disse:

fica um uma reticencias (...)  no final

essa reticencias fica quando o conteudo é muito longo... normal.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
12 minutos atrás, Alexandre de Paula disse:

pelo que vc comenta a mesma rotina funciona com outros XML normalmente?

Sim Alexandre, funciona com outros xml! unica diferença que identifiquei foi o tamanho desses arquivos..

 

Segue XML, suprimi dados do cliente!

52230603785066000122550010051042131254232869-nfe.xml

Link para o comentário
Compartilhar em outros sites

  • Consultores

Não vi nada de estranho no arquivo.

Uma unica observação é o padrão de fim de linha que no seu arquivo está apenas LF (line feed) e sem o CR (carriage return) o que não deveria ser um problema.
vc consegue salvar esse arquivo que vc modificou pra tirar os dados?
 

e qual a mensagem de erro que você recebe?


image.png

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
2 horas atrás, Alexandre de Paula disse:

Uma unica observação é o padrão de fim de linha que no seu arquivo está apenas LF (line feed) e sem o CR (carriage return)

Notei isso tb!
 

 

2 horas atrás, Alexandre de Paula disse:

vc consegue salvar esse arquivo que vc modificou pra tirar os dados?

Cliente estava pegando pelo retorno do MDFe, consultado pelo nsu! Agora só tenho o arquivo xml baixado!
Sabe como consigo jogar esse xml para o componente novamente pra fazer o teste de gravação?

Link para o comentário
Compartilhar em outros sites

  • Membros Pro
  • Solution
3 horas atrás, Alexandre de Paula disse:

No programa exemplo tem a rotina:

Consegui ler o XML.

 

Pessoal achei o problema:

estava fazendo um Update direto de uma Query! Utilizo IBObjects!

alterei para fazer um update em um ClientDataSet:

MANIFEST.Active := false;
MANIFEST.Params[0].AsString := sChave;
MANIFEST.Active := true;
if MANIFEST.Fieldbyname('XMLNOTA').AsString = '' then
  begin
    MANIFEST.Edit;
    MANIFEST.FieldByName('XMLNOTA').AsString := UTF8Encode( ACBrNFe.NotasFiscais.Items[0].XML );
    MANIFEST.Post;
    MANIFEST.ApplyUpdates(-1);
  end;

Não sei explicar o porque, mais dessa forma gravou certinho!

Obrigado pela atenção @Alexandre de Paula

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Consultores

Maravilha!!! Que bom que deu certo!

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultor SAC ACBr

Alexandre de Paula
Ajude o Projeto ACBr crescer - Assine o SAC                    

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  ícone Discórdia Discord   

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil

 

 

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 307 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.