olevariant和数据库中的Blob字段都为指针数据类型,不能直接存取,利用内存流或者文件流的形式,先把数据保存在流变量(比如MM)中,然后赋值,保存。
        query1.Edit;
        MM:=TMemoryStream.Create;
        OleVariant.SaveToStream(MM);//此处为你的ole变量名。
        MM.seek(0,0);
        TBlobField(query1.fieldByName('olevar')).LoadFromStream(MM);
        mm.free;
        query1.post;

解决方案 »

  1.   

    可OleVariant不支持savetostream(流变量)方法,通不过
      

  2.   

    1、
    var OleVar: OleVariant;
    TBlobField.AsVariant := OleVar;2、
    uses DB;procedure TForm1.Button1Click(Sender: TObject);
    var OleVar: OleVariant;
        s: Pchar;
        mmstrm: TMemoryStream;
    0A    blobField: TBlobField;  //使用时是FieldByName('blobField')
    begin
      OleVar := 'AASSSSSS';
      s := PChar(VarToStr(OleVar));
    0A  //ShowMessage(s);
      mmstrm := TMemoryStream.Create;
      mmstrm.Write(s^,Length(s));0D
      mmstrm.Position := 0;  
      blobField.LoadFromStream(mmstrm);
      FreeAndNil(mmstrm);
    end;