[firebase-br] ClientDataSet + Blob + Jpeg
Wellington Melo
wellmsilva em gmail.com
Sex Nov 28 10:20:38 -03 2008
Bom dia,
Uso o SimplesDataset do DBExpress.
2008/11/28 Fabrício Fadel Kammer <ffkammer em conchalnet.com.br>
> Obrigado pelas respostas Kleber e Fausto.
>
> Essa rotina era exatamente a que eu usava quando o acesso era feito
> diretamente através de TIBDataSet (sem o ClientDataSet).
>
> Porém agora que acrescentei o ClientDataSet em meu sistema, para reduzir o
> tempo de transações abertas, não consigo recuperar as imagens que eu gravo.
>
> Aparentemente a imagem é gravada de forma danificada, pois vejo que o campo
> tem conteúdo através do IBExpert, mas na hora que tento recuperar o conteúdo
> do campo (no momento do Jpg.LoadFromStream) recebo a mensage: "JPEG error
> #50"
>
> To ficando louco com isso, meu banco tem inúmeras imagens e não posso
> atualizar meu clientes antes de corrigir essa deficiência.
>
> Abraços e muito obrigado pelo auxílio que você estão me dando!
>
> Fabrício
>
>
> Kleber Caneva escreveu:
>
> Só pra constar, eu também uso DBExpress. Então pode ser problema do
>> componente de acesso qeu você está usando e não do CDS.
>>
>> []´s
>>
>> Kléber Caneva
>>
>>
>> ----- Original Message ----- From: "Fausto" <fausto.s.a em uol.com.br>
>> To: <lista em firebase.com.br>
>> Sent: Thursday, November 27, 2008 9:47 PM
>> Subject: Re: [firebase-br] ClientDataSet + Blob + Jpeg
>>
>>
>> Fabrício Fadel Kammer escreveu:
>>
>>
>>> Bom dia Kleber,
>>>
>>> Obrigado pelo retorno, mas realmente não consigo gravar e recuperar uma
>>> imagem jpeg através do ClientDataSet.
>>>
>>> Será que mais alguém pode auxiliar-me? Preciso gravar e recuperar
>>> arquivos JPEG dentro de campos Blob usando
>>> ClientDataSet+DataSetProvider+IBQuery.
>>>
>>> Grato
>>>
>>> Fabrício
>>>
>>>
>>>
>> Amigo, não uso IBQuery, uso DBExpress faço da seguinte forma:
>> Para gravar:
>> var
>> BS: TStream;
>> Imagem: TJPEGImage;
>> begin
>> with DataRepres do
>> begin
>> if CdsPar.State = dsEdit then
>> begin
>> FotoProDialog.Title := 'Selecione um logotipo';
>> if FotoProDialog.Execute then
>> begin
>> BS := CdsPar.CreateBlobStream((CdsParLOGO as TBlobField),
>> BMWRITE);
>> Imagem := TJPEGImage.Create;
>> Imagem.LoadFromFile(FotoProDialog.FileName);
>> Imagem.SaveToStream(BS);
>> Logo.Picture.Assign(Imagem);
>> BS.FREE;
>> Imagem.Free;
>> end;
>> end;
>> end;
>> end;
>>
>> Para exibir:
>> var
>> BS: TStream;
>> Imagem: TJPEGImage;
>> begin
>> with DataRepres do
>> begin
>> CdsPar.Open;
>> Logo.Picture := nil;
>> BS := CdsPar.CreateBlobStream((CdsParLOGO as TBlobField), BMREAD);
>> if BS.Size > 0 then // Verifica se o registro tem imagens gravadas
>> begin
>> Imagem := TJPEGImage.Create;
>> Imagem.LoadFromStream(BS);
>> Logo.Picture.Assign(Imagem);
>> BS.FREE;
>> Imagem.Free;
>> end;
>> end;
>> end;
>> Lembrando que:
>> Logo é um TImage
>> FotroProDialog é um TOpenDialog
>>
>>
>
>
> ______________________________________________
> FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
> Para saber como gerenciar/excluir seu cadastro na lista, use:
> http://www.firebase.com.br/fb/artigo.php?id=1107
> Para consultar mensagens antigas: http://firebase.com.br/pesquisa
>
Mais detalhes sobre a lista de discussão lista