Fórum delphi 7 gravar arquivo foto .jpg erro #475743

09/04/2014

0

tabela do paciente

CREATE TABLE PACIENTEFOTO (
PAC_SEQFICHA INTEGER NOT NULL,
PAC_FOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80,
PAC_SEQUENCIA INTEGER NOT NULL
);

---------------------------------------
utilizo o dbexpress

comando da sql

SELECT
PAC_SEQFICHA ,
PAC_SEQUENCIA ,
PAC_FOTO
FROM PACIENTEFOTO
WHERE PAC_SEQFICHA = :PAC_SEQFICHA



-----------------------------------------
utilizo o compoente OpenPictureDialog1 para o usuario pesquisar a foto para ser gravada

clico no botao gravar depento do tamanho do arquivo da certo, se for arquivo maior da a mensagem abaixo de erro

implementation limit exceeded maximum blob size exceeded

tamanho 3.028 kb da erro
tamanho 100 kb da certo

meu exemplo no delphi

procedure Tfrmpodologiafotos.SpeedButton1Click(Sender: TObject);
var
Imagem : TPicture;

begin
inherited;

// Image1.Picture.SaveToFile(''C:Imagem.bmp'');


if FrmPrincipalSGCAdm.OpenPictureDialog1.Execute then
begin

Imagem := TPicture.Create();
Imagem.LoadFromFile(FrmPrincipalSGCAdm.OpenPictureDialog1.FileName);
Clipboard.Assign(Imagem);
DBImagem.PasteFromClipboard;
Imagem.Free;






end;


end;

-----------------------------------------------------
alguem pode me ajudar a resover este problema

Grato

Placido




Plácido Netto

Plácido Netto

Responder

Posts

29/04/2014

Paulo Freire

Olá Placido estou imaginado seu banco como Firebird, se for MS-SQL é outro esquema, e te passo, Oracle muda um pouco também.

cria uma store procedure no seu banco para gravar a foto



Imagino que seu TImage já esteja aparecendo a foto escolhida ok, então estou pulando essa etapa.

btnGravaFoto

var
ImageJPG: TJPEGImage;
ImageMST: TMemoryStream;

begin

if (imgFotoCapturada.Picture.Graphic = nil) then
begin
MessageDlg('A Foto não foi capturada !!!', mtError,[mbOk], 0);
exit;
end;

try

DM.storeGrava.ParamByName('Codigo').AsInteger := Remove(txtCodigo.Text);
DM.storeGrava.ParamByName('FOTO').LoadFromStream(ImageMST , ftBlob);
DM.storeGrava.ExecProc;

finally

//Deu tudo Certo e Grava
Application.MessageBox('Foto do produto gravada com sucesso !!!','Salvar',
MB_ICONINFORMATION + mb_OK);

end;


Responder

Gostei + 0

08/05/2014

Plácido Netto

Paulo

Bom dia

Muito obrigado pela gentileza de tentar me ajudar

eu instalar no meu micro o delphi xe2

Fiz o que vc comentou, mas continua dando erro

vou passar abaixo o que eu fiz.


-----------------------------------------------------------
MINHA PROCEDURE
-------------------------------------------------------------
CREATE PROCEDURE PGRAVAIMAGEM (
PCLIENTE INTEGER,
PFOTO BLOB SUB_TYPE 0 SEGMENT SIZE 80)

AS
DECLARE VARIABLE VEMPRESA INTEGER;
BEGIN


BEGIN
INSERT INTO pacientefoto (PAC_SEQFICHA ,pac_foto)
VALUES (:PCLIENTE,:PFOTO);
END


SUSPEND;
END

------------------------------------------------------------------------------

botao gravar
---------------------------------------------------------------------
procedure Tfrmpodologiafotos.actGravarExecute(Sender: TObject);
var
ImageJPG: TJPEGImage;
ImageMST: TMemoryStream;

begin
// inherited;
if (DBIMAGEM.Picture.Graphic = nil) then
begin
MessageDlg('A Foto não foi capturada !!!', mtError,[mbOk], 0);
exit;
end;

try

// DBIMAGEM.PasteFromClipboard;

spfoto.ParamByName('PCLIENTE').AsInteger := FrmPrincipalSGCAdm.VSEQFICHA;
spfoto.ParamByName('PFOTO').LoadFromStream(ImageMST , ftBlob);
spfoto.ExecProc;



finally

//Deu tudo Certo e Grava
Application.MessageBox('Foto do produto gravada com sucesso !!!','Salvar',
MB_ICONINFORMATION + mb_OK);
end

end;


-------------------------------------------------------------------
esta dando erro nesta linha

spfoto.ParamByName('PFOTO').LoadFromStream(ImageMST , ftBlob);

--------------------------------------------------------
pergunta nos comando que vc passou vc nao tem que gerar a imagem na variavel
ImageJPG: TJPEGImage;
ImageMST: TMemoryStream;

----------------------------------------------------

pergunta o que eu preciso fazer para resolver este problema

Grato

Placido
















Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar