Inserir BLOB por query
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.
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
Curtidas 0
Respostas
Barbara.michele
27/05/2005
Alguém poderia me dar uma dica????
GOSTEI 0
Barbara.michele
27/05/2005
O que deve ser colocado no lugar de DbASSINATURA.Picture ?
Obrigada.
Obrigada.
GOSTEI 0
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
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.
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
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