Fórum LER STRING COMPLETA DO CAMPO BLOB - DELPHI #618204
10/06/2022
0
Fala galera!
Pessoal, gostaria de pedir a ajuda de vocês em uma questão que estou batendo a cabeça e não consigo achar uma solução.
É o seguinte, estou desenvolvendo um sistema de cadastro de produtos em Delphi.
Esse sistema tem somente um form, pois é apenas para cadastro mesmo. E nesse form, tenho alguns campos, buttons e um TImage.
O Banco de dados está hospedado em um data center, e ele é Firebird na versão 2.5.
Dentro deste banco tenho uma tabela (Tab_Produtos) que contendo os seguintes campos:
> CODIGO - Integer
> EAN - Char (13)
> NOMEPRODUTO - Varchar (100)
> FOTO - Blob SubType(Text)
> PRECO - Decimal(15,2)
A comunicação é feita tranquilamente, os dados são enviados e recebidos também via JSON.
Converto a imagem em Base64, para salvar no campo FOTO, e a String da foto chega completa no banco, assim como todos os outros dados também.
A questão é que, preciso em um determinado momento retornar essas informações, inclusive a string da foto para converte-la de Base64 para JPGE, PNG ou Bitmap.
Porém, nesse momento a consulta não retorna a string inteira e a imagem acaba ficando incompleta.
Os dados da consulta de retorno eu estou armazenando em um MemTable.
Segue código que faz a consulta:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Ex.: Quando envio a string da foto ela tem um size de 25000 caracteres. E quando faço o retorno, a string vem com 4500 caracteres.
Obs.: Não tenho muita experiência na área ainda.
Alguém sabe como posso fazer para recuperar a string inteira?
Vou deixar abaixo o códiog que estou fazendo a leitura dentro da MemTable após fazer a consulta.
Obrigado desde já, galera! ;)
Pessoal, gostaria de pedir a ajuda de vocês em uma questão que estou batendo a cabeça e não consigo achar uma solução.
É o seguinte, estou desenvolvendo um sistema de cadastro de produtos em Delphi.
Esse sistema tem somente um form, pois é apenas para cadastro mesmo. E nesse form, tenho alguns campos, buttons e um TImage.
O Banco de dados está hospedado em um data center, e ele é Firebird na versão 2.5.
Dentro deste banco tenho uma tabela (Tab_Produtos) que contendo os seguintes campos:
> CODIGO - Integer
> EAN - Char (13)
> NOMEPRODUTO - Varchar (100)
> FOTO - Blob SubType(Text)
> PRECO - Decimal(15,2)
A comunicação é feita tranquilamente, os dados são enviados e recebidos também via JSON.
Converto a imagem em Base64, para salvar no campo FOTO, e a String da foto chega completa no banco, assim como todos os outros dados também.
A questão é que, preciso em um determinado momento retornar essas informações, inclusive a string da foto para converte-la de Base64 para JPGE, PNG ou Bitmap.
Porém, nesse momento a consulta não retorna a string inteira e a imagem acaba ficando incompleta.
Os dados da consulta de retorno eu estou armazenando em um MemTable.
Segue código que faz a consulta:
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
procedure TDmProdutos.ListarProdutos;
var
Resp : IResponse;
Begin
Resp := TRequest.New.BaseURL(URL)
.Resource('produtos')
.Accept('application/json')
.BasicAuthentication(USER,PASSWORD)
.DataSetAdapter(TabProdutos)
.Get;
if (Resp.StatusCode = 0) then
raise Exception.Create('Não foi possível acessar o servidor!')
else if (Resp.StatusCode <> 200) then
raise Exception.Create(Resp.Content);
End;
Ex.: Quando envio a string da foto ela tem um size de 25000 caracteres. E quando faço o retorno, a string vem com 4500 caracteres.
Obs.: Não tenho muita experiência na área ainda.
Alguém sabe como posso fazer para recuperar a string inteira?
Vou deixar abaixo o códiog que estou fazendo a leitura dentro da MemTable após fazer a consulta.
Obrigado desde já, galera! ;)
procedure TFrm_ProdutoCadastro.Btn_BuscarRegistrosClick(Sender: TObject);
var
Foto64 : string;
Texto : TStream;
Begin
With DmPRodutos.TabProdutos do
Begin
if FieldByName('situacao').value = 'A' then
Cb_Ativo.Checked := True
else
Cb_Ativo.Checked := False;
Caixa_Codigo.Text := FieldByName('codigo').value;
Caixa_Ean.Text := FieldByName('ean').value;
Caixa_NomeProduto.Text := FieldByName('produto').value;
Caixa_Gramatura.Text := FieldByName('gramatura').value;
Caixa_Unidade.Text := FieldByName('unidade').value;
Caixa_IDSetor.Text := FieldByName('idsetor').value;
Caixa_Setor.Text := FieldByName('setor').value;
Caixa_Marca.Text := FieldByName('marca').value;
Caixa_PrecoGondola.Text := FieldByName('precogondola').value;
Caixa_PrecoPromocao.Text := FieldByName('precopromocao').value;
Caixa_Descricao.Text := FieldByName('descricao').value;
Texto := CreateBlobStream(FieldByName('foto'),bmRead);
Memo1.Lines.LoadFromStream(Texto);
End;
End;Jonas Gonçalves
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)