你走弯路了,可以直接用OLeContainer控件SaveToStream,以流的方式写到数据库

解决方案 »

  1.   

    我现在正开发这方面的,请联系我?[email protected]
      

  2.   

    把用Ole连接AutoCad2000,他编辑的数据以Object的形式存在OLeContainer
    中,把此对象存取到数据库方法如下:
    我这里有代码:
     var strstream:Tmemorystream; 
    begin strstream := Tmemorystream.Create;
    query2.Close; 
    query2.sql.clear; query2.SQL.Add('select qw from oadbo.bw_qwb where wjid =' + inttostr(lwid)); 
    query2.open ; 
    query2.First; Tblobfield(query2.fieldbyname('qw')).savetostream(strstream);
     strstream.position:=0; 
    OleContainer1.loadfromstream(strstream);
     strstream.free; 
    end;
     ///////////写////////////////
     ms:TMemoryStream;
     begin
     ms:= TMemoryStream.create; 
    OleContainer1.SaveToStream (ms); 
    ms.Position := 0; 
    Query1.close;
     Query1.sql.clear; 
    Query1.sql.text:='select * from oadbo.bw_qwb'; 
    Query1.open;
     Query1.append; 
    Query1.fieldbyname('wjid').value:=nlwid ; 
    Query1.fieldbyname('wjdid').value:=0; 
    Query1.fieldbyname('kzm').value:='doc';
     TBlobField(Query1.fieldbyname('qw')).loadfromstream(ms); 
    ms.free; Query1.post;
     //Query1.applyupdates;
     Query1.close; 
    end;
      

  3.   

    tquery不能对数据进行更改,要用ttable,或tupdatesql,tadoquery等