Jump to content

Anexar pdf


CanonTG
 Share

Recommended Posts

Boas, quero inserir um pdf ao meu campo blob da base de dados. Adiciona bem mas ao abrir danifica o ficheiro.

Adicionar campo


 blob := Query.CreateBlobStream(Query.FieldByName('anexos'), bmWrite);try
 blob.Seek(0, soFromBeginning);
   try
     blob.CopyFrom(TFileStream.Create(Edit3.Text, fmOpenRead), TFileStream.Create(Edit3.Text, fmOpenRead).Size)
   finally
     TFileStream.Create(Edit3.Text, fmOpenRead).Free
   end;
 finally
  blob.Free;
 end;

Abrir o ficheiro



var
//Tratando Blob
   S : TMemoryStream;
   FileStream : TFileStream;
   blob:TStream;
   //Confirmação de informações
   resultado : Integer;

   str:String;
begin

Query.SQL.Clear;
Query.SQL.Text :='select anexos from oportunidades where '
+'nOportunidade = '''+datasource1.dataset.fieldbyname('nOportunidade').AsString+''' ';
Query.Open;

  //Contando o resultado...
   resultado := Query.RecordCount;


    S := TMemoryStream.Create;
     try
     //Criação do arquivo que receberá o pdf...
       FileStream := TFileStream.Create(Query.FieldByName('anexos').AsString, fmCreate);

       //Salvamento do conteúdo do arquivo dentro da memória Ram...
       TBlobField(Query.FieldByName('anexos')).SaveToStream(S);

       //Ainda não sei a função do posicionamento...
       S.Position := 0;

       //Transferência dos dados da Ram para o arquivo criado
       FileStream.CopyFrom(S, S.Size);

       //Abertura do arquivo.
       //RESULT := 'c:\arquivo.pdf';
       str:=Query.FieldByName('anexos').AsString;

       ShellExecute(handle, 'open',PChar(str),nil,nil,SW_NORMAL);
     finally
       S.Free;
       FileStream.Free;
     end;
Link to comment
Share on other sites

Tens de gravar o ficheiro para o disco... o ShellExecute tem de receber um caminho onde estás a dar o Str.

Se o teu pdf está a carregar bem para o FileStream entao deves usar a funçao SavetoFile para gravar para um c:\temp.pdf por exemplo e abrir esse caminho no ShellExecute

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.