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]