Fórum Inserir BLOB por query #283087

27/05/2005

0

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

Responder

Posts

10/06/2005

Barbara.michele

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


Responder

Gostei + 0

26/08/2005

Barbara.michele

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

Obrigada.


Responder

Gostei + 0

27/08/2005

Kapak

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;



Responder

Gostei + 0

27/08/2005

Barbara.michele

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.


Responder

Gostei + 0

28/08/2005

Kapak

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;



Responder

Gostei + 0

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

Aceitar