Inserir BLOB por query

Delphi

27/05/2005

Pessoal,

Fiz uma busca aqui nas msgs postadas sobre campos do tipo BLOB, mas não entendi muito bem.
Eu tenho um cadastro de funcionários onde salvo uma imagem para cada registro inserido no banco. Estou usando o Delphi 5 e o Oracle 9i.
TABELA: COD DO TIPO VARCHAR2, NOME DO TIPO VARCHAR2, FOTO DO TIPO BLOB.
A inserção dos dados faço utilizando o componente QUERY da seguinte forma:

with qryAux do
begin

// Monta inclusão
Close;
SQL.Clear;
SQL.Add(´insert into FUNCIONARIO
( COD, NOME, FOTO ) ´);
SQL.Add(´VALUES (´ );
SQL.Add( #39 + edtCod.Text + 39 + ´, ´ + 39 +
edtNOME.Text + 39 + ´, + DbASSINATURA.Picture + )´);

// Atribui valores aos parâmetros
// Executa inclusão
try

// Inicia a transação
DMSav.DBSav.StartTransaction;

ExecSQL;

Como devo passar o campo BLOB dentro dessa expressão da query? Estou usando um DBImage no form p/carregar a imagem.

Estou passando: DbASSINATURA.Picture e está dando erro na hora de executar a inclusão.

Obrigada.


Barbara.michele

Barbara.michele

Curtidas 0

Respostas

Barbara.michele

Barbara.michele

27/05/2005

Alguém poderia me dar uma dica????


GOSTEI 0
Barbara.michele

Barbara.michele

27/05/2005

O que deve ser colocado no lugar de DbASSINATURA.Picture ?

Obrigada.


GOSTEI 0
Kapak

Kapak

27/05/2005

Salve a imagem num TMemoryStream e passe a foto por parâmetro (:Foto)
var MS:TMemoryStream; 
begin
  MS := TMemoryStream.Create;
  Image.Picture.Graphic.SaveToStream(MS);
  QryAux.ParamByName(´Foto´).LoadFromStream(MS, ftBlob);
  MS.free;
end;



GOSTEI 0
Barbara.michele

Barbara.michele

27/05/2005

Obrigada pela dica.
Tenho um componente TQuery e uso o código abaixo para inserir na tabela:

TempSQL := ´Insert into TABELA (nome, endereco, foto) ´ +
´values (¬S, ¬S, ?)´;
SQLStr := Format(TempSQL, [#39 + nome.Text + 39, 39 + endereco.Text + 39, ?????]);

1. O que devo colocar no lugar do ? em values (¬S, ¬S, ?) ?
2. Como passarei por parâmetro se utilizo o código acima para inserir? Substituo o ????? pelo que?

Valeu.


GOSTEI 0
Kapak

Kapak

27/05/2005

Para deixar o código mais legível, deixe todos como parâmetros:
var MS:TMemoryStream; 
begin 
  MS := TMemoryStream.Create; 
  QryAux.SQL.Clear;
  QryAux.SQL.Add(´Insert into TABELA (nome, endereco, foto) ´ + 
                           ´values (:P0,:P1,:P2)´);
  QryAux.ParamByName(´P0´).asString := nome.Text; 
  QryAux.ParamByName(´P1´).asString := endereco.Text; 
  Image.Picture.Graphic.SaveToStream(MS); 
  QryAux.ParamByName(´P2´).LoadFromStream(MS, ftBlob); 
  MS.free; 
  QryAux.ExecSQL;
end;



GOSTEI 0
POSTAR