[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