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
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
Curtir tópico
+ 0
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;
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
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
Clique aqui para fazer login e interagir na Comunidade :)