jpg no Firebird 1.5.3

Delphi

05/09/2006

pessoal, em primeiro lugar quero me desculpar, pois há vários tópicos falando sobre imagens aqui no forum, inclusive tem tópico meu sobre, mas o fato é que até hoje ainda nao consegui fazer algo que preste, ou seja, nao consegui aqui salvar uma imagem jpg na minha tabela...

bom atualmente, implementei algo que chega a salvar o jpg na tabela, porem ao inves de me dar a mensagem de ´´Imagem Cadastrada Com Sucesso´ como voces verão no codigo abaixo, ele me gera a mensagem de erro: ´Internal Error´, e nao chega até o post, deixando o banco aberto... porém como ja disse a imagem é salva na tabela.

vou postar aqui meu código:


Tabela:

CREATE TABLE IMG_S
(
  CODIGO        INTEGER NOT NULL,
  IMAGEM BLOB SUB_TYPE 0 SEGMENT SIZE 240,
CONSTRAINT PK_IMG_S PRIMARY KEY (CODIGO)
);


Procedure pra salvar a imagem:

var
  Img : TJpegImage;
begin

        Dm.Tbl_Img_S.Insert;

        Img := TJpegImage.Create;
        Img.LoadFromFile(OpenPictureDialog1.FileName);
        TBlobField(Dm.Tbl_Img_S.fieldByName(´Imagem´)).Assign( Img );
        Image1.Picture.Assign( Img );
        Img.Free;

        Dm.Tbl_Img_S.Post;

        ShowMessage(´Imagem Cadastrada Com Sucesso.´);
    
end;


Obs: se eu remover a linha ´Dm.Tbl_Img_S.Post;´ nenhum erro é gerado, porem nada é salvo na tabela é claro...

Componentes de acesso ao banco:
- TIBDatabase
- TIBTransaction
- TIBDataSet
- DataSource

Componentes do formulario:
- TOpenPictureDialog
- TImage


acho que é isso... se alguem puder me dar uma mão ai....
abraços!


Mahdak

Mahdak

Curtidas 0

Respostas

Martins

Martins

05/09/2006

Já tentou usar stream?


GOSTEI 0
Mahdak

Mahdak

05/09/2006

ja tentei tudo o que está ai:
http://forum.clubedelphi.net/viewtopic.php?t=73753&highlight=

inclusive essa parte do tópico:


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;


o erro: ´Invalid Class Typecast.´

nao sei o que posso estar fazendo errado, uma vez que a maioria do pessoal diz que isso funciona beleza com eles....

:roll:


GOSTEI 0
Randall

Randall

05/09/2006

tente usar o dclser70 para o delphi 7, ele tem um componente chamado edbimage e um qredbimage ,

Abrir.execute ;
if dm.vendas.State in [dsedit,dsinsert] THEN
begin
if abrir.FileName <> ´´ THEN
dm.vendasFOTO.LoadFromFile(abrir.FileName);
end
ELSE
ShowMessage(´Pressione o botão de edit ou insert´);

fiz usando o componente e funciona perfeitamente


GOSTEI 0
Mahdak

Mahdak

05/09/2006

tente usar o dclser70 para o delphi 7, ele tem um componente chamado edbimage e um qredbimage , Abrir.execute ; if dm.vendas.State in [dsedit,dsinsert] THEN begin if abrir.FileName <> ´´ THEN dm.vendasFOTO.LoadFromFile(abrir.FileName); end ELSE ShowMessage(´Pressione o botão de edit ou insert´); fiz usando o componente e funciona perfeitamente


desculpa randall mas voce está falando a respeito de um arquivo .bpl ?
dclser70.bpl ??? nao tenho ele aqui na pasta bin do delphi...

mais alguma dica?

abraços


GOSTEI 0
POSTAR