Salvar e recuperar XML no banco de dados

Delphi

Firebird

ACBr

19/02/2022

Olá, bom dia. Tudo bem com todos?

Eu coloquei meu banco de dados firebird na Nuvem(SaveInCloud). Está funcionando muito bem, meu sistema também. Perfeito! Porém, trabalho com emissão de notas fiscais e preciso salvar os arquivos XMLS, tanto pra enviar para a contabilidade como para visualizar Danfe no sistema. Tentei salvar esses arquivos na SaveIncloud mas não obtive êxito. Pesquisei no fórum Acbr me disseram para salvar os XMLS no banco de dados, assim o fiz. Mas não sei como faço para recuperar os arquivos. Exemplo: se eu emitir 200 notas no mês de março, e precisar baixá-las em xml para enviar para a contabilidade, como que consigo recuperar essas informações no banco de dados, da forma menos trabalhosa possível?
Luan

Luan

Curtidas 0

Melhor post

Paulo

Paulo

19/02/2022

Eu não salvaria o arquivo propriamente dito no banco. Vulgarmente falando o xml não passa de um "arquivo de texto". Eu armazenaria o seu conteudo dentro de um campo blob. Quando o usuario for exportar os dados para a contabilidade você lê os campos e gera um arquivo xml.
GOSTEI 1

Mais Respostas

Luan

Luan

19/02/2022

Eu não salvaria o arquivo propriamente dito no banco. Vulgarmente falando o xml não passa de um "arquivo de texto". Eu armazenaria o seu conteudo dentro de um campo blob. Quando o usuario for exportar os dados para a contabilidade você lê os campos e gera um arquivo xml.



Eu salvei o conteúdo dentro de um campo blob. Eu não estou sabendo como ler o campo e gerar o arquivo xml. Preciso gerar 20 XMLs, por exemplo. Como eu faço?
GOSTEI 0
Paulo

Paulo

19/02/2022

Eu criaria um campo blob sub type 1, segment size 100.

Referente a quantidade de XMLs a gerar isso vai ser sempre variavel, dependendo a dinamica do seu sistema e a necessidade do usuario. Supondo que a tabela de arquivos xml está ligada a tabela de NFe você faz o select no banco trazendo apenas o resultado solicitado.

Para fazer a leitura do campo blob pode fazer assim,

FDQuery1.Fields[0].AsString;


Eu jogaria o conteudo dentro de uma tstringlist e salvaria onde o usuario pediu (voce trata isso com um savedialog).

Geralmente o nome do arquivo é a chave de acesso.xml

var xml : TStringList;
begin

  with FDQuery1 do begin
    Close;
    SQL.Clear;
    SQL.Add('seu select');
    Open;
  end;

  if not FDQuery1.IsEmpty then begin
    xml :=  TStringList.Create;
    xml.Add(FDQuery1.Fields[0].AsString);
    xml.SaveToFile('C:\\teste.xml');
  end;

  FreeAndNil(xml);

GOSTEI 0
POSTAR