LER STRING COMPLETA DO CAMPO BLOB - DELPHI
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 :)