Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2341678
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:05:47

我用Access2000建了一个数据库,其中有一个“ole对象”类型的字段“myStream”,如何读取和保存该字段中的数据?

我已经能够读取该ole字段中的数据了,可不知如何修改其中的内容,以及新建记录时如何保存数据到该字段中。

我的程序如下:
//程序窗体Form1中有1个ADODataSet控件、1个TRichViewEdit控件,和一个Button控件

 TStream *pStream;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{


}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
     //DataSet1为ADODataSet控件,该控件已正确连接到上面含有ole字段的表中,Active属性也已设为true

     DataSet1->Edit();

    if (DataSet1->State == dsEdit)
    {
       pStream = DataSet1->CreateBlobStream(DataSet1->FieldByName("myStream"), bmReadWrite);
       //将控件内容显示在TRichViewEdit控件中
       RichViewEdit1->LoadRVFFromStream(pStream);
       //这是我加的一条测试语句,显示流数据的大小,其实也就是数据库中第1条记录中ole字段内容的大小
       //我测试的时候显示的是160
       ShowMessage(IntToStr(pStream->Size));
       RichViewEdit1->Format() ;  //只有加上这条语句,RichViewEdit1中显示的内容才可以编辑
       
    }


}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)   //这是一个“保存”按钮,用于将修改后的RichViewEdit1中的内容再保
{                                                       //存到数据库中.

    if (DataSet1->State != dsEdit)
      DataSet1->Edit();

    RichViewEdit1->SaveRVFToStream(pStream,false);  //保存RichViewEdit1中的数据到流中
    //程序运行时我在RichViewEdit1中插入了一个数字字符“1”,此时显示的流大小为162
    ShowMessage(IntToStr(pStream->Size));
    //保存数据    
    DataSet1->Post();



}
//---------------------------------------------------------------------------




可是在RichViewEdit1中修改的内容并没有被保存到表中的ole字段中,再次打开程序时,内容丝毫没变,我实在是搞不清什么原因了,所以请Victor大哥给指点一下吧!先谢谢了!


--------------------next---------------------

阅读(1062) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~