C++ Builder 怎么获得Accdb表中附件

幸福人生 2011-08-03 11:47:06
有一张Accdb表如下:
id name telephone office depart area remark Address
1009 蝈蝈 3336656 9088 IT 江西 工作 as.ini
1212 张胡 233433 8774 HR 福建 工作 as.ini
1222 李强 132778 0987 HT 南京 工作 as.ini
1627 王五 2312344 2342 IT 福建 工作 as.ini
3887 张三 21248384 3434 HR 江西 工作 as.ini

每个as.ini保存内容不一样。每个as.ini文件是内容是个人现在所住详细地址。

我想得到as.ini这个文件。

当我选择张三时。当点下button时。弹出保存文件对话框。所保存的内容是张三的附件中也是as.ini文件




...全文
96 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzbinfo 2011-08-16
  • 打赏
  • 举报
回复
问题解决了就好,呵呵
//保存的代码
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;

}
//读取的代码
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;

}
zzbinfo 2011-08-09
  • 打赏
  • 举报
回复
一看思曾相识,再一看,果然是一个人,呵呵。http://topic.csdn.net/u/20110808/13/18131b42-bcb7-4f6a-a137-dac6c407b6b5.html问题解决了没有?呵呵。
tulipcaicai 2011-08-09
  • 打赏
  • 举报
回复
把文件名路径存到数据库中不行么?
jone7319 2011-08-09
  • 打赏
  • 举报
回复

//将字段内容存为文件
TMemoryStream *temp=new TMemoryStream();
((TBlobField *)ADOQuery1->FieldByName("Package"))->SaveToStream(temp);
temp->Position=0;
temp->SaveToFile("123.ini");


幸福人生 2011-08-03
  • 打赏
  • 举报
回复
谢谢你,你还有没有其他办法可以解决我这个问题吗??我实在是想不还有什么办法啦
CppFile 2011-08-03
  • 打赏
  • 举报
回复
估计这个路径是没法得到了,我刚看了一下,accdb的附件字段类型是把数据保存到数据库中的,也就是,如果你这个文件有50m,那么这50m都在数据库中,数据库文件会增大50m(通常会压缩一些)
幸福人生 2011-08-03
  • 打赏
  • 举报
回复
对.accdb表不了解。 .accdb表与Excel表基本一样,唯一不一样就.accdb表比Excel表多一项附件。
而as.ini文件是保存在附件中的。我可以通过ADOQuery->FieldByName("Address")->AsString;得到(Address)里面文件名,但得不到as.ini文件路径。
这个问题我主要想知道:
我在C++ Builder里怎么可以获得到附件里as.ini文件。
思路:如果可以得到as.ini文件路径用CopyFile函数就解决问题了。
希望那们大侠可以帮我一下。
CppFile 2011-08-03
  • 打赏
  • 举报
回复
楼主的意思是将信息保存在as.ini这个文件中?还是取得as.ini这个文件中的内容?如果是后者,你能在硬盘上找到as.ini这个文件么?
你的意思看不太明白

1,178

社区成员

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

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