我用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) |