我在用D6+ACCESS时遇到一个问题
表中有一个为OLB 类型的字段准备以后在程序中以用户的方式存图片入数据库中,
可是不知道如何设置,
具体的代码如何写?
望高手告知。

解决方案 »

  1.   

    procedure TForm1.BitBtn1Click(Sender: TObject);
      const
        Buf_Size=2048;//写数据的缓冲大小。
      var
        MyImg:TPicture;
        MyStream:TstringStream;
        MyConn,MyRec:variant;
        SourceSize,DestSize:int64;
    begin
      //--创建流并将图形数据读入。(使用Graphics单元)
      MyStream:=TstringStream.Create('');
      MyImg:=TPicture.create;
      MyImg.LoadFromFile('test.jpg');
      MyImg.Graphic.SaveToStream(MyStream);
      MyStream.Position:=0;
      //----------------------
      SourceSize:=MyStream.Size;//读出图形数据的大小.
      DestSize:=0;             //初始化写入的数据量变量。
      //----进行数据库连接。注:要使用comObj单元
      MyConn:=createOleObject('AdoDb.Connection');
      MyConn.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=test.mdb;Persist Security Info=False';
      MyConn.open;
      MyRec:=CreateOleObject('AdoDB.recordset');
      MyRec.Open ('MyPic',MyConn,3,3,2);
      //-----------增加新记录,并写入图形数据。
      Myrec.addnew;
      while DestSize<=SourceSize do
        begin
          MyRec.Fields['Picture'].AppendChunk(Mystream.ReadString(buf_Size));
          DestSize:=DestSize+buf_Size;
        end;
      MyRec.update;
      //----------------------------------
      MyRec.close;
      MyImg.Free ;
      MyStream.Free ;
    end;
    注:要将图形数据从库中读出原理一样.
      

  2.   

    补充:
      "test.Mdb"库结构为:
       ---表名:MyPic
       ---该表中只有一个字段:'Picture',数据类型为'Ole 对象'