Este é o texto da discussão anterior que enviei. Para mais informações procure 
a thread "Grava imagens no Banco Interbase/Firebir"  ... essa minha mensagem 
foi postada dia 14/05/2008.
Aqui sugiro que as imagens sejam gravadas no próprio banco de dados. Indico 
sempre que seja utilizada a técnica de armazenar as imagens em uma tabela 
dedicada para isso. Assim, qualquer tabela que precise de imagens apenas terá 
um vínculo com a tabela de imagens.

================================================================

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 
... 

================================================================

Espero que isso te ajude.

Alessandro DUARTE de Moraes
A.C. Santa Casa do Rio Grande.
http://www.santacasarg.com.br

  ----- Original Message ----- 
  From: Carlos 
  To: delphi-br@yahoogrupos.com.br 
  Sent: Tuesday, May 20, 2008 6:32 PM
  Subject: Re: RES: [delphi-br] Gravar e visualizar imagem do banco de dados


  Me desculpe a insistência, mas é que nunca precisei efetuar um 
  cadastro com foto, e que precisa-se ser exibido em um sistema em rede,
  mas como assim colocar a imagem em um caminho de rede comum?
  Sem querer ser abusado, o colega poderia ser um pouco mais específico?
  Quanto a sugestão do colega "Alessandro DUARTE de Moraes" compreendo 
  que alguns assuntos são maçantes, mas antes de mais nada, explico-lhe 
  que procurei na lista por assuntos relacionados, mas nada que pudesse 
  me ajudar, procurei no google também.
  Agradeço de antecipadamente por qualquer ajuda!
  Carlos

  --- Em delphi-br@yahoogrupos.com.br, "Davi Eduardo Borges Wall" 
  <[EMAIL PROTECTED]> escreveu
  >
  > Basta colocar a imagem em um caminho de rede comum para todas as 
  maquinas
  > 
  > 
  > 
  > De: delphi-br@yahoogrupos.com.br [mailto:delphi-
  [EMAIL PROTECTED] Em nome de Alessandro DUARTE de Moraes
  > Enviada em: segunda-feira, 19 de maio de 2008 18:01
  > Para: delphi-br@yahoogrupos.com.br
  > Assunto: Re: [delphi-br] Gravar e visualizar imagem do banco de 
  dados
  > 
  > 
  > 
  > Este assunto foi discutido na semana passada. Sugiro que você dê 
  uma olhada pois foram abordados vários casos.
  > 
  > Alessandro DUARTE de Moraes
  > A.C. Santa Casa do Rio Grande.
  > http://www.santacasarg.com.br
  > 
  > ----- Original Message ----- 
  > From: Carlos 
  > To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%
  40yahoogrupos.com.br> 
  > Sent: Monday, May 19, 2008 4:57 PM
  > Subject: [delphi-br] Gravar e visualizar imagem do banco de dados
  > 
  > Boa tarde a todos!!
  > Solicito ajuda aos colegas com mais este problema:
  > Tem um sistema que captura uma foto com o caminho do banco de dados 
  e 
  > apresenta para o usuário. Até ai tudo bem, mas o problema é que 
  este 
  > sistema é usado na rede, e caso o usuário tente visualizar a imagem 
  > em uma máquina diferente de onde estão as imagens, ocorre um erro 
  > porque ele não encontra o caminho.
  > Alguém poderia me dar uma ajuda neste sentido, com um tutorial, ou 
  > link...por favor...
  > Uso DBExpress, MySql 5.0, Delphi 7.
  > 
  > //Este é o código para exibir a imagem
  > dmCadastro.cdsFotos.Close;
  > dmCadastro.cdsFotos.Params[0].Value :=
  > dmCadastro.cdsEfetivorf.Value;
  > dmCadastro.cdsFotos.Open;
  > if not (dmCadastro.cdsFotos.IsEmpty) then
  > imgFoto.Picture.LoadFromFile(dmCadastro.cdsFotosfoto.Value)
  > else
  > imgFoto.Picture := nil;
  > 
  > //Este é o código que salva a imagem
  > if dlgOpenPicFoto.Execute then
  > begin
  > dmCadastro.cdsFotos.Insert;
  > dmCadastro.cdsFotosrf.Value :=
  > dmCadastro.cdsEfetivorf.Value;
  > imgFoto.Picture.LoadFromFile(dlgOpenPicFoto.FileName);
  > dmCadastro.cdsFotos.FieldByName('Foto').AsString :=
  > dlgOpenPicFoto.FileName;
  > dmCadastro.cdsFotos.Post;
  > end;
  > 
  > Agradeço antecipadamente a atenção dispensada.
  > att
  > Carlos
  > 
  > -------------------------- 
  > E-mail Seguro Vetorial.net 
  > 
  > Mensagem classificada como NÃO-SPAM. Para classificar como SPAM, 
  > encaminhe para [EMAIL PROTECTED] <mailto:spam%40vetorial.net> 
  > 
  > Chave de Identificação: 54568,4831dc66542791418011894 
  > 
  > [As partes desta mensagem que não continham texto foram removidas]
  > 
  > 
  > 
  > 
  > 
  > [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,48334380458801645597364 


[As partes desta mensagem que não continham texto foram removidas]

Responder a