Fórum gravar arquivo no firebird #279285

28/04/2005

0

Olá pessoal,

Como eu faço para gravar um arquivo no Firebird ?

Estou fazendo uma aplicação onde o sistema recebe e-mails, e estes e-mails vem com arquivos em anexo. Preciso então gravar estes anexos em uma banco de dados para ficarem arquivados.

Grato,


Denis

Denis

Responder

Posts

28/04/2005

Ariovaldo

Denis a Primeira coisa a ser feita e desanexar o arquivo e salvar numa Pasta Local, a segunda seria criar uma rotina para ler este arquivo que ai varia de formato para formato.


Responder

Gostei + 0

29/04/2005

Raserafim

detalhando um pouco mais a resposta de Ariovaldo, no banco de dados vc deverá criar um campo do type BLOB, este tipo de campo pode receber arquivos de qualquer formato (pois na realidade é um arquivo binary). para gravar e ver estes arquivos vc pode usar a classe TStream, ou um de seus semelhantes mais específicos. Procure sobre TStream aqui no forum que vai encontrar algumas referências.


Responder

Gostei + 0

29/04/2005

Denis

Oi pessoal,

Obrigado pela força. Acho que descobri com fazer. Ainda não testei mas parece ser isso mesmo. Segue a função para mais alguém que tenha a mesma dúvida.

//----------- Gravar Blob
var
m : TQuery;
begin
m:=TQuery.Create(self);
m.DatabaseName:=´Um\databasename\qualquer´;
m.sql.add(´UPDATE TABELA_TAL´);
m.sql.add(´SET campo_blob=:_nomearq´);
m.sql.add(´WHERE campo_chave =1´);
try
m.ParamByName(´_nomearq´).LoadFromFile(´C:\TEMP\TESTE.DOC´,ftBlob);
m.ExecSQL;
except
on e:exception do
begin
ShowMessage(e.message);
end;
end;
end;

//----------------- Ler blob
var
BlobStream : TBlobStream;
FileStream : TFileStream;
m : Tquery;
begin
m:=TQuery.Create(self);
m.DatabaseName:=´Um\databasename\qualquer´;
m.sql.add(´SELECT campo_chave, campo_blob´);
m.sql.add(´FROM TABELA_TAL´);
m.sql.add(´WHERE campo_chave =1´);
// Salvando o arquivo em disco
try
m.Open;
BlobStream := TBlobStream.Create(m.Fieldbyname(´campo_blob´) as TBlobField, bmRead);
FileStream := TFileStream.Create(´C:\TEMP\MEU_DOC.DOC´, fmCreate or fmOpenWrite);
FileStream.CopyFrom(BlobStream, 0);
ShowMessage(´Documento salvo em disco. Clique em [OK] para prosseguir ...´);
finally
// Liberando memoria
FileStream.Free;
BlobStream.Free;
m.Free;
end;
end;


achei estas funções no site www.firebase.com.br. Tem uns artigos muito bons por lá.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar