Gravando imagens no Access
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:
opdFoto -> OpenPictureDialog
imgFoto -> DBImage
O código grava bitmaps sem problemas. Alguém sabe o problema?
P.S. - a unit JPeg já foi adicionada.
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
Curtidas 0
Respostas
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:
opdFoto -> OpenPictureDialog
imgFoto -> DBImage
O código grava bitmaps sem problemas. Alguém sabe o problema?
P.S. - a unit JPeg já foi adicionada.
f (opdFoto.Execute) and (imgFoto.DataSource.DataSet.State in [dsInsert, dsEdit]) then DM.qryTbPessoasFoto.LoadFromFile(opdFoto.FileName);
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
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.
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