Fórum erro ao Salvar imagem na tabela #312511

10/02/2006

0

Pessoal quero gravar uma imagem na tabela entao fasso o seguinte:

- Firebir 1.5, delphi 7

- Campo da tabela: ´IMAGEM BLOB SUB_TYPE 0 SEGMENT SIZE 240´

Dm.Tbl_Corretor.insert;
Dm.Tbl_CorretorImagem.LoadFromFile(OpenPictureDialog1.FileName);
Dm.Tbl_Corretor.post;
Dm.Tbl_Corretor.applyupdates;
showMessage(´imagem gravada com sucesso´);


o erro que é retornado é o seguinte: ´Internal Error´

- mesmo dando esse a imagem é salva na tabela, porem nao é exibido o ´ShowMessage´

- Ja tentei com o componente TImage e TDBImage... com ambos gera o mesmo erro.

Obs: baixei um componente sugerido por um colega do forum. ´eDBImage´, porem nao consegui instala-lo, entao preferia que fosse com os componentes nativos do delphi...

se alguem puder me ajudar...

Abraços!


Mahdak

Mahdak

Responder

Posts

13/02/2006

Mahdak

pessoal, estou fazendo assim pra gravar a imagemem jpg:

uses ..... jpeg,Clipbrd;
.
.
.
.
.
.

var 
jpg:TJpegImage;
begin
if OpenPictureDialog1.Execute then 
begin
jpg := TJpegImage.Create;
jpg.LoadFromFile(OpenPictureDialog1.FileName);
clipboard.Assign(jpg);
DBImage1.PasteFromClipboard;
jpg.Free;
end;
end;


- porem ainda continuo tendo o o erro: ´Internal error´ ...
Obs: mesmo com esse erro a imagem é salva na tabela....

Alguem ja passou por isso? alguem poderia me dar uma mão?
Abraços!


Responder

Gostei + 0

13/02/2006

Mahdak

se eu remover essas duas linhas nao acontece o erro:

Dm.Tbl_Corretor.post;
Dm.Tbl_Corretor.applyupdates;

porem nao salva....

e agora..... :cry:


Responder

Gostei + 0

13/02/2006

Martins

Vamos tentar assim:

Dm.Tbl_Corretor.Append; 
Dm.Tbl_CorretorImagem.Assign(OpenPictureDialog1.FileName); 
Dm.Tbl_Corretor.post; 
Dm.Tbl_Corretor.applyupdates; 
showMessage(´imagem gravada com sucesso´); 


Espero q funcione para o q vc deseja!


Responder

Gostei + 0

13/02/2006

Martins

Corrigindo o post anterior.

var
 Img: TJpegImage;
 BStream : TBlobStream;
begin
  Dm.Tbl_Corretor.Append; 
  BStream := TBlobStream.Create((Imagem as BlobField), BMWrite);
  Img := TJpegImage.Create;
  Img.LoadFromFile(OpenPictureDialog.FileName);
  Img.SaveToStream(BStream);
  BStrteam.Free;
  Img.Free;
  Dm.Tbl_Corretor.post; 
  Dm.Tbl_Corretor.applyupdates; 
  showMessage(´imagem gravada com sucesso´); 
end;


Boa Sorte!!!


Responder

Gostei + 0

13/02/2006

Mahdak

erro:
-----

[Error] U_Corretor.pas(431): Incompatible types: ´TPersistent´ and ´TFileName´


Responder

Gostei + 0

13/02/2006

Mahdak

erro: ----- [Error] U_Corretor.pas(431): Incompatible types: ´TPersistent´ and ´TFileName´


opa, desculpa nao tinha visto a correção do código, mas o delphi gerou o seguinte erro:

[Error] U_Corretor.pas(374): Undeclared identifier: ´TBlobStream´


Será que tem que eclarar algo em USES???


Responder

Gostei + 0

13/02/2006

Mahdak

uses

DBTables


Responder

Gostei + 0

13/02/2006

Mahdak

só mais uma pergunta...

BStream := TBlobStream.Create((Imagem as TBlobField), BMWrite);

´Imagem´ é um campo certo?? que campo é esse???


Responder

Gostei + 0

13/02/2006

Mahdak

ok fiz assim:
var
Img:TJpegImage;
BStream : TBlobStream;
Imagem:TBlobField;

Dm.Tbl_Corretor.Append;
BStream := TBlobStream.Create((Imagem as TBlobField), BMWrite);
Img := TJpegImage.Create;
Img.LoadFromFile(OpenPictureDialog1.FileName);
Img.SaveToStream(BStream);
BStream.Free;
Img.Free;


- Deu erro de Acess Violation at adress.....


Responder

Gostei + 0

14/02/2006

Emerson Nascimento

[i:75ad7c0d9a]Imagem[/i:75ad7c0d9a] é o próprio campo!
var 
  Img:TJpegImage; 
  BStream : TBlobStream; 
begin
  Dm.Tbl_Corretor.Append; 
  BStream := TBlobStream.Create((Dm.Tbl_CorretorImagem as TBlobField), BMWrite); 
  Img := TJpegImage.Create; 
  Img.LoadFromFile(OpenPictureDialog1.FileName); 
  Img.SaveToStream(BStream); 
  BStream.Free; 
  Img.Free;
  Dm.Tbl_Corretor.Post;
end;



Responder

Gostei + 0

14/02/2006

Martins

[i:f6926dc169]Imagem[/i:f6926dc169] é o próprio campo!
var 
  Img:TJpegImage; 
  BStream : TBlobStream; 
begin
  Dm.Tbl_Corretor.Append; 
  BStream := TBlobStream.Create((Dm.Tbl_CorretorImagem as TBlobField), BMWrite); 
  Img := TJpegImage.Create; 
  Img.LoadFromFile(OpenPictureDialog1.FileName); 
  Img.SaveToStream(BStream); 
  BStream.Free; 
  Img.Free;
  Dm.Tbl_Corretor.Post;
end;


Valew pela contribuição [b:f6926dc169]Emerson.en[/b:f6926dc169]!


Responder

Gostei + 0

14/02/2006

Mahdak

emerson, muito obrigado ela contribuição.... nao queria parecer chato, mas eh que fiz tudo certinho como vc disse e dessa vez o erro foi o seguinte:

´Invalid Class Typecast.´

o que poderia ser isso?


Responder

Gostei + 0

15/02/2006

Mahdak

sobe


Responder

Gostei + 0

15/02/2006

Martins

[b:86487f664a]Vejamos esse código q eu passei para o FabianoNovo[/b:86487f664a]

procedure TFrmFabianovo.LoadFotoBanco(Arquivo: String); 
Var 
stImagem: TFileStream; 
begin 
  stImagem := TFileStream.Create( Arquivo, fmOpenRead or 
  fmShareDenyWrite ); 
  Try 
   ibdsClienteFOTO.LoadFromStream( stImagem ); 
  Finally 
  stImagem.Free; 
End; 
end; 

procedure TFrmFabianovo.GetImgBanco(var foto: TImage); 
Var 
jpgImg: TJPEGImage; 
stMem: TMemoryStream; 
begin 
  If ibdsClienteFOTO.IsNull Then Exit; 
  jpgImg := TJPEGImage.Create; 
  stMem := TMemoryStream.Create; 
  Try 
    ibdsClienteFOTO.SaveToStream( stMem ); 
  stMem.Position := 0; 
  jpgImg.LoadFromStream( stMem ); 
  foto.Picture.Assign( jpgImg ); 
  Finally 
  stMem.Free; 
  jpgImg.Free; 
End; 
end;    


Estou usando TImage no lugar de TDBImage


Responder

Gostei + 0

16/02/2006

Mahdak

Martins, onde está a referencia ao caminho da imagem ´OpenPictureDialog1.FileName´??
fiz desse jeito e ele gerou um erro: ´JPG error #42´

Abraços!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar