jpg no Firebird 1.5.3
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:
Procedure pra salvar a imagem:
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!
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
Curtidas 0
Respostas
Martins
05/09/2006
Já tentou usar stream?
GOSTEI 0
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:
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:
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
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
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
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