高手请进:C++ Builder 怎么得到Access中.mdb表里的OLE对象字段内容

幸福人生 2011-08-08 01:48:29
我有个.mdb表,我想读取表中OLE对象的字段。该怎么做。

如果你写的代码或意建对我有帮助。均可得分。
...全文
335 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zzbinfo 的回复:]
这个是读图像的,读其他的相应的改一下就行了

C/C++ code

TBlobField * pField1=(TBlobField *)DM->DataReadADOQuery->FieldByName("PepolePhoto");
if(!pField1->IsNull)
{
TADOBlobStream* pmem=new TADOBlobStr……
[/Quote]


我看过,我是一个新手。但是不知道怎么读取存进去的文件(123.ini)
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
为什么方便管理,每个文件都是相同的。如果你们的帮助对我有用。我会多给你们50分的。记得今天下午接分呀呀。谢谢。
zzbinfo 2011-08-09
  • 打赏
  • 举报
回复
不会是一点都不想思考吧????
void __fastcall TForm1::Button3Click(TObject *Sender)
{
TOpenDialog *Open = new TOpenDialog(this);
Open->Options.Clear() ;
Open->Options <<ofFileMustExist;
Open->Filter = "文件描述 (*.ini)|*.ini";//改成你要的扩展名
Open->FilterIndex = 0;
if(Open->Execute())
{
TADOQuery *Query = new TADOQuery(Application);
Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "1.mdb;";
Query->SQL->Text = "insert into table1(ee)values('asddasd11')"; //注意这个ee字段的值,你要根据你的具体情况改一下。可以让他是你的记录的序号。
Query->ExecSQL();
TMemoryStream *Inifile = new TMemoryStream();
Inifile->LoadFromFile(Open->FileName);
Query->SQL->Text = "update table1 set asd =:PHOTO where ee ='asddasd11'" ;
Query->Parameters->Items[0]->LoadFromStream(Inifile,ftBlob) ;
Query->ExecSQL();
Query->Close();
delete Query;
delete Inifile;
}
delete Open;
}
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
打开一个.mdb文件后,在表中你点右键-->设计视图-->新加一个OLE对象-->打开后在新加的OLE对象上右键插入对象-->由文件创建-->选择一个文件。
这个过程我想用程序实现。

jone7319 2011-08-09
  • 打赏
  • 举报
回复
导入文件到数据库:

TADOBlobStream *tStream;
TMemoryStream *temp=new TMemoryStream();
temp->LoadFromFile("123.ini");
((TBlobField *)ADOQuery1->FieldByName("Package"))->LoadFromStream(temp);
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 zzbinfo 的回复:]

我发的代码都是我本机测试的代码,我们这么认真的帮你还换来一句“真想帮我”,让我觉得你性格上可能比较不太适合编程。我连测试的表结构都跟你说的,不懂的可以再问,但是不能要求我们写出来的代码你直接复制了就能使用。引用 15 楼 slhappylife 的回复:
.mdb表中某个字段为OLE对象,Package 现在,我有一个文件需要保存在.mdb OLE 字段的Package中,怎么保存。你们写的都……
[/Quote]


哦,谢谢。
jone7319 2011-08-09
  • 打赏
  • 举报
回复

TMemoryStream *temp=new TMemoryStream();
((TBlobField *)ADOQuery1->FieldByName("Package"))->SaveToStream(temp);
temp->Position=0;
temp->SaveToFile("123.ini");
zzbinfo 2011-08-09
  • 打赏
  • 举报
回复
我发的代码都是我本机测试的代码,我们这么认真的帮你还换来一句“真想帮我”,让我觉得你性格上可能比较不太适合编程。我连测试的表结构都跟你说的,不懂的可以再问,但是不能要求我们写出来的代码你直接复制了就能使用。[Quote=引用 15 楼 slhappylife 的回复:]
.mdb表中某个字段为OLE对象,Package 现在,我有一个文件需要保存在.mdb OLE 字段的Package中,怎么保存。你们写的都试过了。不行
如果真想帮我,可以的话,你们自己写完编译一下。加分加分
[/Quote]
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
.mdb表中某个字段为OLE对象,Package 现在,我有一个文件需要保存在.mdb OLE 字段的Package中,怎么保存。你们写的都试过了。不行
如果真想帮我,可以的话,你们自己写完编译一下。加分加分
jone7319 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 slhappylife 的回复:]
你的IniFile这字段是OLE对象吗。你可以编译过吗。
[/Quote]
我不是说过了是备注型字段嘛?
zzbinfo 2011-08-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 slhappylife 的回复:]
你的IniFile这字段是OLE对象吗。你可以编译过吗。
[/Quote]他的代码里面存的应该是备注类型的字段
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
你的IniFile这字段是OLE对象吗。你可以编译过吗。
zzbinfo 2011-08-09
  • 打赏
  • 举报
回复
读取后存到文件的代码,我测试的table1表里面只有3个字段,其中asd就是ole类型的。新手不怕,多试试就会了。
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TADOQuery *Query = new TADOQuery(Application);
Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "1.mdb;";
Query->SQL->Text = "select * from table1 where ee ='asddasd'";
Query->Open();
TBlobField * pField1=(TBlobField *)Query->FieldByName("asd");
if(!pField1->IsNull)
{
TADOBlobStream* pmem=new TADOBlobStream (pField1,bmRead);
pmem->Seek(0,soFromBeginning);
TMemoryStream *Inifile = new TMemoryStream();
Inifile->LoadFromStream(pmem);
Inifile->SaveToFile("12345.ini");
delete Inifile;
delete pmem;
}
Query->Close();
delete Query;

}
jone7319 2011-08-09
  • 打赏
  • 举报
回复
读取就相反


TStringList *file=new TStringList();

..............................//这里省略了读取库表
file->Text=ADOQuery1->FieldByName("IniFile")->AsString;
file->SaveToFile("123.ini");
........................
jone7319 2011-08-09
  • 打赏
  • 举报
回复
你的INI文件适合用备注字段。
TStringList *file=new TStringList();
file->LoadFromFile("123.ini");

..............................//这里省略了读取库表
ADOQuery1->FieldByName("IniFile")->AsString=file->Text;
........................
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
insert into 表名(字段)values('字段值)";
update table1 set 字段 =:PHOTO where 字段 ='字段值'"
幸福人生 2011-08-09
  • 打赏
  • 举报
回复
我想了,这样保存之后就,当你打在看时,它显示的是‘长二进制数据’
而我自己在表中添加时,看得到的是 'Package'
zzbinfo 2011-08-08
  • 打赏
  • 举报
回复
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TADOQuery *Query = new TADOQuery(Application);
Query->ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ExtractFilePath(Application->ExeName) + "1.mdb;";
Query->SQL->Text = "insert into table1(ee)values('asddasd')";
Query->ExecSQL();
TMemoryStream *Inifile = new TMemoryStream();
Inifile->LoadFromFile("123.ini");
Query->SQL->Text = "update table1 set asd =:PHOTO where ee ='asddasd'" ;
Query->Parameters->Items[0]->LoadFromStream(Inifile,ftBlob) ;
Query->ExecSQL();
Query->Close();
delete Query;
delete Inifile;

}
CppFile 2011-08-08
  • 打赏
  • 举报
回复
ini文件完全可以保存在 备注 类型的字段里,这样读写都方便,为什么一定要保存在 ole对象里呢?是文件特别大吗?
幸福人生 2011-08-08
  • 打赏
  • 举报
回复
我现在要把一个1.ini文件保存到OLE对象字段中(package)该怎么写呢????

加分加分
加载更多回复(3)

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧