Fórum Gravar imagem no Banco Firebird com Delphi Xe #553763
11/05/2016
0
Boa Noite,
Preciso Fazer algo muito simples:
01 Pegar uma foto em uma Pasta e Grava-la no Banco de Dados
02 - Pegar esta foto gravada no banco e mostra-la em um TImage.
Já peguei centenas de exemplos na Net mas nenhum funcionou corretamente, alguém tem um exemplo simples de cada uma destas funções que funcione.
Obrigado.
Ambiente: SO - Windows 8.1
Delphi - XE
Banco - Firebird 2
Preciso Fazer algo muito simples:
01 Pegar uma foto em uma Pasta e Grava-la no Banco de Dados
02 - Pegar esta foto gravada no banco e mostra-la em um TImage.
Já peguei centenas de exemplos na Net mas nenhum funcionou corretamente, alguém tem um exemplo simples de cada uma destas funções que funcione.
Obrigado.
Ambiente: SO - Windows 8.1
Delphi - XE
Banco - Firebird 2
Amauri Alves
Curtir tópico
+ 0
Responder
Posts
12/05/2016
Dorivan Sousa
certo eu uso FDCommand (Firedac) e MemoryStream, eu pego a imagem diretamente do Image, pra carregar a imagem no Imagem é so usar o loadfromfile
gravando a imagem
recuperando
detalhe nao funciona com IBX. (paleta interbase)
gravando a imagem
try
AbreTrans(Transacao); //aqui é uma funcao que uso pra iniciar a transação
Query.Close;
Query.CommandText.Clear;
Query.CommandText.Add('Insert Into ALUNOS_ARQUIVOS(ALUNO, LOJA, TIPO, INDICE, ARQUIVO)');
Query.CommandText.Add('Values (:CODIGO, :LOJA, :TIPO, :INDICE, :ARQUIVO)');
Query.ParamByName('CODIGO').AsString:=Codigo;
Query.ParamByName('LOJA').AsString:=gLoja_Padrao;
Query.ParamByName('TIPO').AsInteger:=Tipo;
Query.ParamByName('Indice').AsInteger:=Indice;
Imagem.Picture.Graphic.SaveToStream(st);
st.Seek(0,0);
Query.ParamByName('Arquivo').LoadFromStream(St, ftGraphic); //no caso a imagem é um JPG
Query.Execute;
SalvaTrans(Transacao);
Result:=True;
except
on E: exception do
begin
Result:=False;
FechaTrans(Transacao); //tratar de quem
TraduzException('Erro ao grava Arquivo.'+sLineBreak+e.message,nil);
Abort;
end;
end;
recuperando
AbreTrans(Transacao);
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('select ARQUIVO from ALUNOS_ARQUIVOS');
Query.SQL.Add('where ALUNO = '+QuotedStr(Codigo));
Query.SQL.Add('and LOJA = '+QuotedStr(gLoja_Padrao));
Query.SQL.Add('and Tipo = '+IntToStr(Tipo));
Query.SQL.Add('and Indice = '+IntToStr(Indice)); //somente um arquivo por operacao
Query.Open;
if not Query.IsEmpty then
begin
if not Query.FieldByName('ARQUIVO').isNull then
begin
TBlobField(Query.FieldByName('ARQUIVO')).SaveToStream(St);
St.Position:=0;
Jpg.LoadFromStream(st);
Imagem.Picture.Assign(Jpg);
Result:=True;
end;
end;
FechaTrans(Transacao);
except
on E: exception do
begin
Result:=False;
FechaTrans(Transacao); //tratar de quem
TraduzException('Erro ao Recuperar Arquivo.'+sLineBreak+e.message,nil);
Abort;
end;
end;
detalhe nao funciona com IBX. (paleta interbase)
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)