Gravando imagens no Access

Delphi

05/05/2004

Olá pessoal
Tenho uma tabela Access q tem um campo ´Foto´, do tipo objeto OLE. Minha intenção era gravar uma imagem jpg, mas dá sempre o seguinte erro: ´Stack OverFlow´. Segue o código que estou usando:
f (opdFoto.Execute) and (imgFoto.DataSource.DataSet.State in [dsInsert, dsEdit]) then
    DM.qryTbPessoasFoto.LoadFromFile(opdFoto.FileName);

opdFoto -> OpenPictureDialog
imgFoto -> DBImage
O código grava bitmaps sem problemas. Alguém sabe o problema?
P.S. - a unit JPeg já foi adicionada.


Tnaires

Tnaires

Curtidas 0

Respostas

Pabhen

Pabhen

05/05/2004

Olá pessoal Tenho uma tabela Access q tem um campo ´Foto´, do tipo objeto OLE. Minha intenção era gravar uma imagem jpg, mas dá sempre o seguinte erro: ´Stack OverFlow´. Segue o código que estou usando:
f (opdFoto.Execute) and (imgFoto.DataSource.DataSet.State in [dsInsert, dsEdit]) then
    DM.qryTbPessoasFoto.LoadFromFile(opdFoto.FileName);
opdFoto -> OpenPictureDialog imgFoto -> DBImage O código grava bitmaps sem problemas. Alguém sabe o problema? P.S. - a unit JPeg já foi adicionada.


Vc faz assim:

Se vc tiver usando BDE, vc cria uma variavel do tipo TBlobStream, se for ado é do tipo TAdoBlobStream, e mais uma do tipo TfileStream, essa serve para os dois tipos.

A variavel blob vai receber os dados da variavel imagem, vou passar o meu exemplo pra vc entender melhor:

procedure TForm1.Button1Click(Sender: TObject);
Var
I: Integer;
stImagemStream: TFileStream;
stBlobStream: TBlobStream;
begin
for I := (FileListBox1.ItemIndex) to (FileListBox1.Items.Count-1) do
begin
FileListBox1.ItemIndex := I;

qryBDE.Insert;

stImagemStream := TFileStream.Create(
FileListBox1.FileName,
fmOpenRead OR fmShareDenyWrite );
stBlobStream := TBlobStream.Create( qryBDEImagem, bmWrite );

Try
stBlobStream.CopyFrom( stImagemStream, stImagemStream.Size );
Finally
stImagemStream.Free;
stBlobStream.Free;
End;
qryBDE.Post;
Application.ProcessMessages;
end;
end;

ps.: usei um Filelistbox para listar as imagens da pasta e carregar pra dentro do banco.

espero ter ajudado.


GOSTEI 0
Tnaires

Tnaires

05/05/2004

Muito obrigado pela dica, pabhen!
Eu havia transposto o problema, convertendo o jpeg para um bitmap antes de gravar os dados. Mas vou testar sua sugestão.
Abraços.


GOSTEI 0
POSTAR