Page 1 of 1

Blob Update PRoblem

Posted: Tue 25 Aug 2009 11:30
by ssteeltr
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;

Solve

Posted: Tue 25 Aug 2009 14:32
by ssteeltr

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;

Posted: Wed 26 Aug 2009 09:41
by Plash
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);

Re: Blob Update PRoblem

Posted: Thu 27 Aug 2009 23:42
by eduardosic
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;