[firebase-br] ClientDataSet + Blob + Jpeg
Wellington Melo
wellmsilva em gmail.com
Sex Nov 28 10:25:53 -03 2008
Uso o SimplesDataset do DBExpress.
Para este caso eu uso: SimplesDataSet, cxDBImagem do Jedi;
Não precisa de função nenhuma, basta colocar:
Simplesdataset1FOTO.LoadToFile(OpenDialog1.filename);
no insert e pronto. ele grava e mostra a imagem a qualquer momento.
2008/11/28 Wellington Melo <wellmsilva em gmail.com>
> 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