Gravar imagem no Interbase
Estou precisando gravar imagem no Banco Interbase mas não consegui. Criei um campo tipo BLOB e estou usando o componente DBImage. quando vou dar um ApplyUpdates não retorna erro mas no Banco o campo fica (NULL) como se não tivesse nenhuma imagem. O que pode ter dado errado?
Seu_madruga
Curtidas 0
Respostas
Edilcimar
05/04/2005
mostre o codigo de gravação do campo, pois provavelmente aí está o erro
GOSTEI 0
Seu_madruga
05/04/2005
Bem, teoricamente não tem nenhuma anormalidade, Eu tenho um DBImage lincado com um DataSource que liga a Tabela. Este DBImage eu seleciono o campo FOTO que é do tipo BLOB. No botão gravar eu dou um POST depois um APPLYUPDATES. Não nenhum erro, os outros registro gravam, string, integer mas a imgaem em si não grava. Ao verificar no Banco se tem alguma coisa, o campo foto está como NULL.
PS: Agora não tenho o fonte mas se preferir assim que tiver eu posto aqui blz.
Valew
PS: Agora não tenho o fonte mas se preferir assim que tiver eu posto aqui blz.
Valew
GOSTEI 0
Edilcimar
05/04/2005
qual o código de gravação do campo, está utilizando assign?
GOSTEI 0
Kotho
05/04/2005
Se não me engano, tem um subtipo específico de blob para gravar imagem.... qual o subtipo que você criou o campo...
GOSTEI 0
Aroldo Zanela
05/04/2005
Colega,
Use LoadFromFile do objeto TField para carregar imagens (ou outros arquivos) para campos BLOBs. Basta uma única linha de código.
http://forum.clubedelphi.net/viewtopic.php?t=60817&highlight=pdf
Use LoadFromFile do objeto TField para carregar imagens (ou outros arquivos) para campos BLOBs. Basta uma única linha de código.
http://forum.clubedelphi.net/viewtopic.php?t=60817&highlight=pdf
GOSTEI 0
Seu_madruga
05/04/2005
Não, o componente DBImage é estático por isso não trato assign nele. Eu consigo carregar uma imagem nele usando um OpenDialog. A imagem carrega perfeitamente no DBImage, depois só confirmo a inclusão. Pelo que eu saiba os componentes DB, edits, memos,... funcionam automáticos, é só eu preencher eles com alguma coisa e dar um Apply que eles já são gravados, o mesmo penso que funciona o DBImage.
GOSTEI 0
Aroldo Zanela
05/04/2005
Se não me engano, tem um subtipo específico de blob para gravar imagem.... qual o subtipo que você criou o campo...
Colega,
Eu uso: BLOB SUB_TYPE 0 SEGMENT SIZE 4096
GOSTEI 0
Seu_madruga
05/04/2005
Bem, aqui eu criei o campo como somente BLOB e o banco automaticamnete coloca do tipo BLOB SUB_TYPE 0 SEGMENT SIZE 80, será que pode ser isso, a tamanho era muito pesqueno pra imagem? Mas talvez era para aparecer algo no Banco e não (NULL) certo?
GOSTEI 0
Wly
05/04/2005
Cara,
É o seguinte, passei por este problema também e percebi que o problema é que o IB só aceita BMP e não JPEG, fiz o teste de gravar com o JPEG não dá erro porem o campo fica NULL. fiz o mesmo teste com BMP e funcionou muito bem, Ok !!!
Faça esse teste, depois me diga se funcionou, Ok !!!
É o seguinte, passei por este problema também e percebi que o problema é que o IB só aceita BMP e não JPEG, fiz o teste de gravar com o JPEG não dá erro porem o campo fica NULL. fiz o mesmo teste com BMP e funcionou muito bem, Ok !!!
Faça esse teste, depois me diga se funcionou, Ok !!!
GOSTEI 0
Tchelllo
05/04/2005
Caro amigo wly...
O Interbase/Firebird aceitam imagens JPG sim, se vc usa uma Query, digite essa linha de comando para gravação:
(qryCadastro.FieldByName(´arq_blob´) as TBlobField).LoadFromFile
(NomeArquivo+´.JPG´);
ou se está usando uma TTable:
(tbCadastro.FieldByName(´arq_blob´) as TBlobField).LoadFromFile(NomeArquivo+´.PDF´);
também poderia faze-lo utilizando um OpenPictureDialog...alterando a passagem...
(qryCadastro.FieldByName(´arq_blob´) as TBlobField).LoadFromFile
(OpenPictureDialog.FileName);
Onde:
tbCadastro -> Nome do objeto da classe TIBQuery, TADTable etc;
qryCadastro -> Nome do objeto da classe TIBQuery, TADOQuery etc;
arq_blob -> nome da coluna no banco (BLOB - SubType 2) ;
NomeArquivo -> Caminho e nome do arquivo;
Até mais!
O Interbase/Firebird aceitam imagens JPG sim, se vc usa uma Query, digite essa linha de comando para gravação:
(qryCadastro.FieldByName(´arq_blob´) as TBlobField).LoadFromFile
(NomeArquivo+´.JPG´);
ou se está usando uma TTable:
(tbCadastro.FieldByName(´arq_blob´) as TBlobField).LoadFromFile(NomeArquivo+´.PDF´);
também poderia faze-lo utilizando um OpenPictureDialog...alterando a passagem...
(qryCadastro.FieldByName(´arq_blob´) as TBlobField).LoadFromFile
(OpenPictureDialog.FileName);
Onde:
tbCadastro -> Nome do objeto da classe TIBQuery, TADTable etc;
qryCadastro -> Nome do objeto da classe TIBQuery, TADOQuery etc;
arq_blob -> nome da coluna no banco (BLOB - SubType 2) ;
NomeArquivo -> Caminho e nome do arquivo;
Até mais!
GOSTEI 0