Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Junior99

Gravacao e leitura de campo Imagem em banco de dados

Recommended Posts

Ola pessoal.

 

A minha pergunta pode ser muito ridicula para alguns, mas estou passando um bocado para tentar fazer funcionar a gravacao e a leitura de um campo DBImage para um campo no SQL Server 2000.

 

O campo esta definido como Image com tamanho 16.

Defini um DBImage apontando para o referido campo na tabela, fiz o tratamento das acoes (Incluir, Alterar, Excluir) no registro.

 

Quando o usuario clica em Alterar ou Incluir um novo registro, tenho um campo para realizar a carga da Imagem, onde no onclick esta assim:

 

procedure TCadFilial.btnCarregarImagemClick(Sender: TObject); begin if OpenPictureDialog1.execute then    DMCadastros.TabFiliais.Edit;    DBImage1.Picture.LoadFromFile( OpenPictureDialog1.FileName ); end; 

Carrega a imagem, clico no Botao Salvar, mas quando vejo no banco, o campo esta nulo.

 

Alguem poderia me ajudar.

 

Agradeco a ajuda.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Mas claro colega. Segue as duas procedures que usei:

 

procedure LoadImage(Field: TBlobField; ComponentImage: TImage);procedure SaveImage(Field: TBlobField; ComponentImage: TImage; FileName: String);procedure SaveImage;var  Stream: TADOBlobStream;  InTipo:Byte;begin  Try    If FileName <> '' Then      ComponentImage.Picture.LoadFromFile(FileName);    If Assigned(ComponentImage.Picture.Graphic) Then    Begin      Stream:= TADOBlobStream.Create(Field, bmWrite);      If ComponentImage.Picture.Graphic.ClassType = TJPegImage Then        InTipo:= 0;      Try        Stream.Write(InTipo, SizeOf(InTipo));        ComponentImage.Picture.Graphic.SaveToStream(Stream);      Finally        Stream.Free;      End;    End;  Except  End;end;procedure LoadImage;var  Stream: TADOBlobStream;  InTipo: Byte;begin  If Not Field.IsNull Then  Begin    Stream:= TADOBlobStream.Create(Field, bmRead);    Try      Stream.Read(InTipo, SizeOf(InTipo));      If Assigned(ComponentImage.Picture.Graphic) Then        ComponentImage.Picture.Graphic.Free;      Case InTipo Of        0: ComponentImage.Picture.Graphic:= TJPegImage.Create;       End;      ComponentImage.Picture.Graphic.LoadFromStream(Stream);    Finally      Stream.Free;    End;  End Else  Begin    ComponentImage.Picture.Graphic:= nil;    ComponentImage.Refresh;  End;end; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve Hugo.Uma dica, joga esse exemplo no Laboratorio de Scripts, assim quando alguem precisar nao precisa fazer uma busa completa pelo Forum.flw

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.