Extrair xml de campo blob
27/03/2023
0
Estou tentando extrair alguns "arquivos" XML que foram armazenados no BD em forma de texto em campos blob
O BD é Fire Bird 2.5. (Não fui eu quem criei o banco).
Estou tentando extrair os arquivos XML de NFe e CFe. O código é o mesmo para ambos os documentos só troco o tipo na query.
Quando o documento é NFe ele funciona normal.
Quando o documento é CFe ele não funciona.
Se eu utilizar
O arquivo salva em branco.
Se eu utilizar
O arquivo salva com um (Memo) dentro.
Estou tentando resolver isso a alguns dias mas não consegui já tentei basicamente de tudo. Alguém tem alguma luz?
BLOB SUB_TYPE 1 SEGMENT SIZE 100 CHARACTER SET WIN1252 COLLATE WIN1252
O BD é Fire Bird 2.5. (Não fui eu quem criei o banco).
Estou tentando extrair os arquivos XML de NFe e CFe. O código é o mesmo para ambos os documentos só troco o tipo na query.
Quando o documento é NFe ele funciona normal.
Quando o documento é CFe ele não funciona.
Se eu utilizar
ArqXML.Text := qry2.Fields[0].AsString;
O arquivo salva em branco.
Se eu utilizar
ArqXML.Text := qry2.Fields[0].Text;
O arquivo salva com um (Memo) dentro.
Estou tentando resolver isso a alguns dias mas não consegui já tentei basicamente de tudo. Alguém tem alguma luz?
try Conn1 := FConnectionManager.AcquireConn1('Conn1'); Conn2 := FConnectionManager.AcquireConn2('Conn2'); qry1 := TFDQuery.Create(nil); qry2 := TFDQuery.Create(nil); qry1.Connection := Conn1; qry2.Connection := Conn2; ArqXML := TStringList.Create; { Encontra os XML que foram emitidos } try qry1.Close; qry1.SQL.Clear; qry1.SQL.Add('select' + ' nf_numero,' + ' nf_nfe_chave_identificacao' + ' from nf' + ' where NF_MODELO = ' + QuotedStr('SAT') + ' and nf_cancelada = ' + QuotedStr('N') + ' and nf_nfe_enviado = ' + QuotedStr('S') + ' and NF_DTEMISSAO BETWEEN ' + QuotedStr(sDataInicial) + ' AND ' + QuotedStr(sDataFinal)); qry1.Open; except on E: Exception do begin ShowMessage('Erro: ' + E.Message ); qry1.Close; end; end; { Caso encontre XML inicia exportação } if not qry1.IsEmpty then begin qry1.FetchAll; qry1.First; { Cria a pasta no desktop } if not DirectoryExists(uSysTools.DirDesktop + '\xml_sat') then begin ForceDirectories(uSysTools.DirDesktop + '\xml_sat'); end; while not qry1.Eof do begin try qry2.Close; qry2.SQL.Clear; qry2.SQL.Add('select' + ' NF_NFE_XML' + ' from nf ' + ' where nf_nfe_chave_identificacao = ' + QuotedStr(qry1.Fields[1].Text) + ' and nf_numero = ' + QuotedStr(qry1.Fields[0].Text) + ' and nf_modelo = ' + QuotedStr('SAT')); qry2.Open; except on E: Exception do begin ShowMessage('Erro: ' + E.Message ); qry2.Close; end; end; if not qry2.IsEmpty then begin ArqXML.Clear; ArqXML.Text := qry2.Fields[0].AsString; ArqXML.SaveToFile(uSysTools.DirDesktop + '\xml_sat' + qry1.Fields[1].Text + '.xml'); end; qry1.Next; end; end; finally FreeAndNil(qry1); FreeAndNil(qry2); FreeAndNil(ArqXML); FConnectionManager.ReleaseConn1(Conn1); FConnectionManager.ReleaseConn2(Conn2); end;
Paulo
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)