Ir para conteúdo
  • Cadastre-se

dev botao
  • Este tópico foi criado há 3161 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa pessoal estou com um problema na Gravação do XML de terceiros  (No caso meus fornecedores , onde baixo pelo portal da NFe) no Banco de Dados .

 

Estou utilizando Firebird 2.5.1 , Delphi7 e ACBRNfe .

 

Abaixo a estrutura da tabela no firebird pra gravação do xml :

 

CREATE TABLE PCANFEXML (ID_NFE INTEGER NOT NULL, DATA DATA , XMLNFE BLOB SUB_TYPE 1 SEGMENT SIZE 8192 CHARACTER SET UTF8);

Ou seja campo Blob Textual , utilizando como Character Set o UTF8 , mais tambem ja tentei como ISO8859_1 .

 

Abaixo a Rotina de gravação para o Banco de Dados no DELPHI7.até assim está gravando no banco de dados . mais o problema e na hora de recuperar

a informacao q ta dando problema .

 

procedure GRAVA_XMLFOR_BANCO(aQCAD:TQuery;aID_NF:Integer;aNFE:TACBRNFe);

begin

   //===> Rotina Incluida para Ver se campo nNF esta vazio ou não...

   if aNFE.Notasfiscais.Items[0].NFe.Ide.nNF <> 0 then

    begin

     aQCAD.Close;

     aQCAD.SQL.CLEAR;

     aQCAD.SQL.ADD('UPDATE OR INSERT INTO PCANFEXML (ID_NFE,XMLNFE,DATA) VALUES (:ID_NF,:XMLNFE,:DATA) MATCHING (ID_NFE)')

     aQCAD.ParamByName('ID_NF').asinteger := aID_NF;

     aQCAD.ParamByName('XMLNFE').ASSTRING := UTF8Encode(ANFE.NotasFiscais.Items[0].XML);

//   aQCAD.ParamByName('XMLNFE').LoadFromStream(aXML_ARQ,ftBlob); //-- >UTILIZEI ESSAS DUAS OPCOES PARA ARMAZENAMENTO , POREM NENHUM

// DEU CERTO ,  TANTO A DE CIMA PARA A DE BAIXO .

     aQCAD.ParamByName('DATA').AsDateTime := now;

     aQCAD.EXECSQL;

    end;

end;

 

 

Abaixo agora a rotina pra recuperacao do xml gravado no banco . Onde que ocorre o erro = Inválid BLOB ID

 

 

 if not livm01.QCONS1.FieldByName('XMLNFE').isnull then

  begin

      dmnfe.NFe.NotasFiscais.Clear;

      try

       aXML := TStringStream.Create(livm01.QCONS1.FieldByName('XMLNFE').value); //--- O Erro ocorre nesta linha ,. qndo  vai ler o campo XMLNFE .

       dmnfe.NFe.NotasFiscais.LoadFromStream(aXML);

      Finally

       FreeAndNil(aXML);

      end;

  end;

 

 

A unica forma que consegui trazer os dados da banco sem dar o erro . tive que converter o campo BLOB em Varchar utilzando a funcao CAST do firebird .

cast(b.xmlnfe as varchar(32765)) xmlnfe , so assim consegui trazer o xml pro compoenente se dar o erro de inválid BLOB ID .

 

 

e outra ,. esse problema esta dando apenas para NF que vem de terceiro ou é baixada pelo Portal da NF-e . Qndo eu mesmo faço a emissao da NF-e e gravo e depois tento consultar da certo . mais pra nf de terceiro ja fica apresentando esse erro .

 

Se alguem ja tiver passado por isso . e puder me ajudar . agradesço .

 

 

Adilson Pazzini.

 

  • Consultores
Postado

Quais componentes você usa para acessar o BD?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Postado

Recupero assim:

 

var
XMLStream: TStringStream ;
begin
   if not DtmNFE.PSQ.Active then
   begin
      TaskShowMessage('Desculpe, não existe NFe selecionada para ser consultada!');
      Exit;
   end
   else
   if DtmNFE.PSQ.RecordCount = 0 then
   begin
      TaskShowMessage('Desculpe, não existe NFe selecionada para ser consultada!');
      Exit;
   end;
   //--- Atualização de informações no DB
   DtmNFE.NFE_0.Close;
   DtmNFE.NFE_0.CommandText := 'SELECT * FROM NFE_FON WHERE NFE_ID = ' + DtmNFe.PSQ.FieldByName('NFE_ID').AsString;
   DtmNFE.NFE_0.Open;
   //---
   TNFE_Class.ACBr_NFe.NotasFiscais.Clear;
   try
     XMLStream := TStringStream.Create(DtmNFE.PSQ.FieldByName('NFE_XMLNOTAFISCAL').AsString);
     XMLStream.Position := 0;
     TNFE_Class.ACBr_NFe.NotasFiscais.LoadFromStream(XMLStream);
     try
       TNFE_Class.ACBr_NFe.Consultar;

 

mas uso DBX, d2010

  • Curtir 1

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Postado

Obrigado Isaque , so uma duvida , vc está granvando no banco como BLOB SUB_TYPE 1  , qual character set vc utiliza , e tambem se puder como vc esta gravando no banco de dados , so pra

verificar se tem alguma diferença .

 

Adilson Pazzini .

Postado

Tentei fazer igual ao seu mais continua o problema , E o pior é que quando a NF é emitida por mim , utilizo a mesma rotina . tanto pra gravação quanto pra leitura e funciona normal , agora quando

pego xml de fornecedores pra gravar . ai da o problema ...

Postado

no meu DB o campo está assim:

 

BLOB SUB_TYPE 1 SEGMENT SIZE 80 CHARACTER SET WIN1252

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

Postado

Esse:

 

fNFE_0.FieldByName('NFE_XMLNOTAFISCAL').AsString := UTF8Encode(fACBrNFe.NotasFiscais.Items[0].XML);

--
Isaque Pinheiro
Aracruz/ES - Brasil
___________________________________________________________________________
Site Oficial: www.isaquepinheiro.com.br 
Youtube: youtube.com/isaquepinheirooficialbr
Facebook: facebook.com.br/isaquepinheirooficialbr
Instagram: instagram.com/isaquepinheirooficialbr
Linkdin: https://www.linkedin.com/in/isaquepinheirooficialbr

Conheça o Projeto ORMBr Framework for Delphi - https://www.ormbr.com.br

 

  • Consultores
Postado
é até vergonhoso mais to no BDE ainda ....rs

AHHHHH MEUS OLHOS!!! MEUS OLHOS!!! :D:mrgreen:

 

 

Eu lembro de ter visto problemas parecidos e normalmente eram com conversão de CHARSET do blob durante a criação e o CHARSET selecionado pela transação que está fazendo o select. Inclusive tinha um bug deste tipo que precisava atualizar o FB. Mas usando o BDE eu não tenho prática...

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
  • 3 anos depois...
Postado

  DM.CDS_MDNFe.FieldByName('xml').value    := UTF8Encode( ACBrMDFe1.Manifestos[0].XML);
 

ao gravar no meu campo blob dados firebird o campo fica com um monte de '???????????????????????????????????????????|'

alguém poderia me ajudar ?

  • Este tópico foi criado há 3161 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • 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.