Blob Update PRoblem

Discussion of open issues, suggestions and bugs regarding UniDAC (Universal Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
ssteeltr
Posts: 2
Joined: Tue 25 Aug 2009 11:21

Blob Update PRoblem

Post by ssteeltr » Tue 25 Aug 2009 11:30

When I try to inser code is running

Code: Select all

   
    STM.Clear;
    ppReport1.Template.SaveToStream(stm);
    Q.Close;
    Q.SQL.Clear;
    q.SQL.Add('insert into REPORTS (REPORTNAME,TEMP) VALUES (:R, :T) ');
    Q.Params[0].AsString:=Edit1.Text;
    Q.Params[1].LoadFromStream(stm,ftBlob);
    q.Prepare;
   // ShowMessage(IntToStr(STM.Size));
    q.Execute;
but when I try to update blob filed dont update and data in field show

Code: Select all

0x0:

Code: Select all

    STM.Clear;
    ppReport1.Template.SaveToStream(stm);
    Q.Close;
    Q.SQL.Clear;
    q.SQL.Add('Update  REPORTS Set TEMP=:t where REPORTNAME=:r ');
    Q.Params[0].LoadFromStream(stm,ftBlob);
    Q.Params[1].AsString:=Edit1.Text;
    q.Prepare;
    q.Execute;

ssteeltr
Posts: 2
Joined: Tue 25 Aug 2009 11:21

Solve

Post by ssteeltr » Tue 25 Aug 2009 14:32

Code: Select all

    STM.Clear;
    //qr->Params->CreateParam(ftOraBlob,"SomeBinary",ptInput)->LoadFromStream(Mem, ftOraBlob);"
    ppReport1.Template.SaveToStream(stm);
    Q.Close;
    Q.SQL.Clear;
    q.SQL.Add('Update  REPORTS Set TEMP=:t where REPORTNAME=:r ');
    //Q.Params.CreateParam(ftOraBlob,'t',ptInput).LoadFromStream(STM,ftOraBlob);
    Q.Params[0].ParamType:=ptInput;
    q.params[0].DataType:=ftBlob;
    q.Params[0].LoadFromStream(STM,ftBlob);
    Q.Params[1].AsString:=Edit1.Text;
    q.Prepare;
    q.Execute;

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Wed 26 Aug 2009 09:41

To work with Oracle BLOB you should set DataType of the parameter to ftOraBlob:

// q.params[0].DataType:=ftBlob; // remove because DataType is overriden by LoadFromStream
q.Params[0].LoadFromStream(STM, ftOraBlob);

eduardosic
Posts: 387
Joined: Fri 18 Nov 2005 00:26
Location: Brazil

Re: Blob Update PRoblem

Post by eduardosic » Thu 27 Aug 2009 23:42

ssteeltr wrote:When I try to inser code is running

Code: Select all

   
    STM.Clear;
    ppReport1.Template.SaveToStream(stm);
    Q.Close;
    Q.SQL.Clear;
    q.SQL.Add('insert into REPORTS (REPORTNAME,TEMP) VALUES (:R, :T) ');
    Q.Params[0].AsString:=Edit1.Text;
    Q.Params[1].LoadFromStream(stm,ftBlob);
    q.Prepare;
   // ShowMessage(IntToStr(STM.Size));
    q.Execute;
remember to set Stream position to 0

Code: Select all

   
    STM.Clear;
    ppReport1.Template.SaveToStream(stm);
    stm.Position := 0;
    Q.Close;
    Q.SQL.Clear;
    q.SQL.Add( 'insert into REPORTS (REPORTNAME,TEMP) VALUES (:R, :T) ');
    Q.Params[0].AsString:=Edit1.Text;
    Q.Params[1].LoadFromStream(stm,ftBlob);
    q.Prepare;
   // ShowMessage(IntToStr(STM.Size));
    q.Execute;

Post Reply