Teu problema para recuperar a imagem está na linha em negrito que coloquei abaixo:
procedure TProcFoto.DBGrid1DblClick(Sender: TObject); begin Principal.Edit1.Text := Query1.fieldbyname('CODIGO').AsString; Principal.Edit2.Text := Query1.fieldbyname('NOME').AsString; Principal.imgFoto.Picture.Bitmap.LoadFromFile(Principal.Camera1.FichierImage); close; end; Neste código estás pegando a imagem do arquivo e não do banco de dados. Bem, mas para te ajudar mesmo, sugiro que trabalhes com vou mostrar. Para auxiliar nessa tarefa, criei duas funções, assim para todos os casos que tiverem imagens sempre elas. Neste caso uso os componentes da IBX, mas pode ser usado como exemplo para migrar para outros componentes (por isso é bom usar funções ...). Vale observar que trato aqui tanto para campos BLOB que receberão imagens ou textos. procedure LeCampoBlob(Query: TIBQuery; Campo: string; Propriedade: TPersistent); var TempStream : TStream; begin TempStream := Query.CreateBlobStream(Query.FieldByName(Campo),bmRead); if (Propriedade is TPicture) then begin TPicture(Propriedade).BitMap.LoadFromStream(TempStream); end else begin TStrings(Propriedade).Clear; TStrings(Propriedade).LoadFromStream(TempStream); end; TempStream.Free; end; procedure GravaCampoBlob(Query: TIBQuery; Parametro: string; Propriedade: TPersistent); var TempStream : TMemoryStream; begin TempStream := TMemoryStream.Create; if (Propriedade is TPicture) then begin TPicture(Propriedade).BitMap.SaveToStream(TempStream); Query.Params.ParamByName(Parametro).LoadFromStream(TempStream,ftBlob); end else begin TStrings(Propriedade).SaveToStream(TempStream); Query.Params.ParamByName(Parametro).LoadFromStream(TempStream,ftBlob); end; TempStream.Free; end; A utilização fica assim: ps: utilizar abaixo que a imagem estará numa variável chamada IMAGEM 1) Para inserir uma imagem no banco de dados use o seguinte esquema QInsert.SQL.Text := 'INSERT INTO tabela (codigo,nome,foto) VALUES (:codigo,:nome;:foto)'; QInsert.SQL.ParamByName('codigo').AsString := Edit1.Text; QInsert.SQL.ParamByName('nome').AsString := Edit2.Text; GravaCampoBlob(QInsert,'foto',IMAGEM); QInsert.ExecSQL; 2) Para ler uma imagem do banco ... QSelect.SQL.Text := 'SELECT nome,foto FROM tabela WHERE codigo=:codigo'; QSelect.SQL.ParamByName('codigo').AsString := Edit1.Text; QSelect.Open; Edit2.Text := QSelect.FieldByName('nome').AsString; LeCampoBlob(QSelect,'foto',IMAGEM); QSelect.Close; Depois faça ... COMPONENTE_IMAGE.Picture.BitMap.Assign(IMAGEM); é mais ou menos isso ... adptei essas funções da minha classe de persistência ... Alessandro DUARTE de Moraes A.C. Santa Casa do Rio Grande. http://www.santacasarg.com.br ----- Original Message ----- From: rafaelpinto19 To: delphi-br@yahoogrupos.com.br Sent: Tuesday, May 06, 2008 7:16 PM Subject: [delphi-br] Re: Gravar imagens no Banco Interbase/Firebir Alessandro, Ricardo e Bruno e aos demais membros do Grupo, quero agradecer por tentarem me expilcar e ajudar a resolver este problema, Estou em fase de aprendizagem ainda. Eu tentei um código, mas não deu certo. Mas perece q eu estou no caminho certo. No Primeiro momento eu até pensei que consegui gravar a imagen capturada, pensei em ter conseguindo resolver o problema. Sempre quando faço uma consulta para retornar a foto da pessoa resgitrada no Sistema, sempre aparece a foto da "última" imagem capturada. Ou seja...se eu registrei João, Maria e José respectivamente e capturei a foto de cada um deles, mesmo eu consultando o João, sempre me rotorna a imagem do José, por ter sido o "último" quem o sistema capturou a imagem. Postei esse meu código para ver onde eu estou errando e ver se vcs conseguem me ajudar a resolver este problema. procedure TPrincipal.BtnGravarClick(Sender: TObject); begin //imgFoto.Visible:= True; imgFoto.Picture.Bitmap.LoadFromFile(Camera1.FichierImage); Query.Close; Query.SQL.Clear; Query.SQL.Add('insert into VISITA(CODIGO,NOME,FOTO) values (:CODIGO,:NOME,:FOTO)'); Query.ParamByName('FOTO').LoadFromFile(Camera1.FichierImage,ftBlob); //:= imgFoto.Picture.Bitmap.LoadFromFile(Camera1.FichierImage); Query.ParamByName('CODIGO').AsString := Edit1.Text; Query.ParamByName('NOME').AsString := Edit2.Text; Query.ExecSQL; Query.Transaction.Commit; Query.Transaction.Active := true; end. Onde: . imgFoto = TImage(Image), é o 6º componente da palheta Aditional no Delphi e responsável pela visualização de imagens, fotos e etc. . Camera1 =TCamera(Câmera), É o único componente da palheta Yves e é responsável pela visualização de imagens de uma Webcam ou Câmeras digitais. Nela conseguimos fazer a devidas e necessárias capturas. e esse é o código que eu uso na para visualizar os dados e foto do registro consultado. procedure TProcFoto.DBGrid1DblClick(Sender: TObject); begin Principal.Edit1.Text := Query1.fieldbyname('CODIGO').AsString; Principal.Edit2.Text := Query1.fieldbyname('NOME').AsString; Principal.imgFoto.Picture.Bitmap.LoadFromFile(Principal.Camera1.FichierImage); close; end; Onde: . Principal é o nome do Form de destino onde estão os edtis que vão mostrar as dados a serem pesquisados e a foto do registro a ser mostrada. --- Em delphi-br@yahoogrupos.com.br, "Alessandro DUARTE de Moraes" <[EMAIL PROTECTED]> escreveu > > Essa discussão é bem relevante, então cito alguns pontos a favor: > > 1) Para acessos remotos, isto é, o servidor está em uma localidade e o cliente em outra, não vejo uma forma mais coerente do que ter a imagem tb no banco de dados > 2) Menos "gambiarra" qdo for executar uma select para relatórios ... > > Para completar, sugiro que seja criada uma tabela no banco que seja dedicada a armazenar imagens, apenas com 2 campos: id INTEGER e imagem BLOB > e nas tabelas que são necessárias ter uma ou mais imagens basta colocar campos referenciando ao id desta tabela de imagens. > > Tive experiências traumáticas com as imagens em uma pasta ... mas uma solução bem elaborada pode dar certo, exceto no caso do item 1 que citei acima. > > Abraços, > > Alessandro DUARTE de Moraes > A.C. Santa Casa do Rio Grande. > http://www.santacasarg.com.br > > ----- Original Message ----- > From: Ricardo Cabral > To: delphi-br@yahoogrupos.com.br > Sent: Monday, May 05, 2008 2:02 PM > Subject: RE: [delphi-br] Gravar imagens no Banco Interbase/Firebir > > > Bruno, > > Gravando no banco não deixaria o mesmo muito "pesado" ? > > > > Bruno Lichot <[EMAIL PROTECTED]> escreveu: > Eu prefiro gravar imagens no banco, é mais rápido de trabalhar e no meu modo de ver mais seguro também. > > Abs > > BL > > From: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Ricardo Cabral > Sent: segunda-feira, 5 de maio de 2008 13:34 > To: delphi-br@yahoogrupos.com.br > Subject: Re: [delphi-br] Gravar imagens no Banco Interbase/Firebir > > Acho que seria mais interessante gravar somento o caminho da imagem no BD e gravar a imagem numa pasta. > > rafaelpinto19 <[EMAIL PROTECTED]<mailto:rafaelpinto%40cdsol.com.br>> escreveu: > > Olá galera, > > Alguém poderia me explicar como gravar imagens no Banco de > dados pelo delphi, Estou usandon o componente Tcamera para Visualizar > a imagem pela webcam e o componente TImage para Capturar. Agora salvar > a imagem no Banco eu nnão sei ainda. Se tive rum rotina ou um código > simples. Eu vou agradecer bastante. Obrigado pela atenção!!! > > Abraços, > > Ricardo Cabral > > --------------------------------- > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! > > [As partes desta mensagem que não continham texto foram removidas] > > [As partes desta mensagem que não continham texto foram removidas] > > Abraços, > > Ricardo Cabral > > --------------------------------- > Abra sua conta no Yahoo! Mail, o único sem limite de espaço para armazenamento! > > [As partes desta mensagem que não continham texto foram removidas] > > > > > -------------------------- > E-mail Seguro Vetorial.net > > Mensagem classificada como NÃO-SPAM. Para classificar como SPAM, > encaminhe para [EMAIL PROTECTED] > > Chave de Identificação: 54568,481f3db9196851913172569 > > > [As partes desta mensagem que não continham texto foram removidas] > -------------------------- E-mail Seguro Vetorial.net Mensagem classificada como NÃO-SPAM. Para classificar como SPAM, encaminhe para [EMAIL PROTECTED] Chave de Identificação: 54568,4820d8e0461362074787067 [As partes desta mensagem que não continham texto foram removidas]