Como incluir um Arquivo em um Campo BLOB no Firebird?

Delphi

03/07/2006

Olá,

tenho um campo BLOB no firebird 1.5, e um caminho em formato de string para um arquivo, como eu faço pra pegar este arquivo, e salvá-lo dentro deste campo BLOB? E depois, como faço pra pegar este arquivo, salvar em um local, e executá-lo?


Desde já agradeço

[]s


Titanius

Titanius

Curtidas 0

Respostas

Titanius

Titanius

03/07/2006

Sobe...


GOSTEI 0
Cabelo

Cabelo

03/07/2006

Colega...

Existe bastante material disponível aqui no fórum sobre o assunto... antes de postar um novo tópico, tente sempre procurar primeiro... blz.

mas vamos lá...

é bem simples... vc primeiro precisa usar um clientdataset...

selecione o keyField + o campo Blob da table e abra normalmente..

crie os campos calculados no fieldseditor em Design Time

use os métodos loadfromfile e savetofile do campo do client

um abraço


GOSTEI 0
Thiago Vidal

Thiago Vidal

03/07/2006

Cara, vou te ajudar pq ja procurei por isso aqui no forum, e nenhuma das dicas encontradas aqui funcionou.

A única coisa que funcionou comigo, foi esse ´CreateBlobStream´ do dataset.

Supondo que seu dataset se chame ´Query´, a string com o caminho para o arquivo se chame ´Arquivo´, e o campo blob ´Texto´.

var
  Arquivo: string;
  bs: TStream;
  fs: TMemoryStream;
begin
  Query.Edit;
  fs := TMemoryStream.Create;
  bs := Query.CreateBlobStream(Query.FieldByName(´Texto´), bmWrite);
  try
    fs.LoadFromFile(Arquivo);
    fs.SaveToStream(bs);
  finally
    Query.Post;
    bs.Free;
    fs.Free;
  end;
end;



GOSTEI 0
Cabelo

Cabelo

03/07/2006

Colega...

O Stream é utilizado somente para carregar um arquivo texto para um memo por exemplo... ou um arquivo de imagem para um TImage..

mas manipulação de arquivos propriamente dito deve ser feito através dos métodos

LoadFromFile..

e

SaveToFile..

e no fórum tem muita coisa boa.. tenho aqui muitos programas feitos a partir de dicas daqui do fórum...

claro que nem sempre existe aquilo que precisamos... mas é só pesquisar e juntar as coisas...

um abraço..


GOSTEI 0
Titanius

Titanius

03/07/2006

Amigo, aqui não funcionou.. estou usando ClientDataSet.... será que é isso!?

[]s


GOSTEI 0
Cabelo

Cabelo

03/07/2006

Qual o erro ????

vc está utilizando assim???

campoblobdoclientdataset.loadfromfile(caminho);

campoblobdoclientdataset.savetofile(caminho);

não tem muito segredo...

o uso do TStream é aconselhável para o uso de campos blob do tipo texto ou imagem... eu aconselho o restante dos arquivos, .EXE, .DOC, .PDF, etc... vc utilizar esses métodos...

o TStream aqui por exemplo deu um bug, alterando o arquivo .DOC.. ele simplesmente absteve o cabeçalho e o rodapé...

eu usei o loadfromfile e savetofile direto dos campos do client e funcionou perfeitamente..


GOSTEI 0
POSTAR