Access数据库的问题(120分)

  • 主题发起人 主题发起人 sleepy
  • 开始时间 开始时间
S

sleepy

Unregistered / Unconfirmed
GUEST, unregistred user!
用Access数据库存储一堆文章资料,怎样把word中编辑好的带图片/表格的
文档存储到数据库中? 能在RichEdit中显示出来吗?有什么好办法?
 
用ole类型字段作为对象嵌入的格式存。
在richedit中要存为rtf格式才可以。
要支持图片则应该使用好些的控件比如rxlib的rxRichedit
 
faint,energy 你假冒我上瘾了。
请大家警惕真假hubdog.:O)
 
hubdog or Energy 大侠:
那我往库里面录入是不是很麻烦? 有简单的方法吗?
 
当然可以写程序来完成,但你要说的详细些,到底是想干什么,比如是否要读入大
量的word文件。

 
对不起,是俺没说清楚 :)
却是是读入大量的word文档,有几千篇吧,咋办?谢谢啦 :)
 
几千篇?那你的Acceess数据库可能要撑不住。这里建议你不要再使用Access
数据库了。我刚才到微软的站点逛了一圈,看到了被成为MSDE的技术,终于
可以在单机版的桌面环境下直接使用SQL7数据库文件了。借助称为MSDE的技术,
可以类似Jet驱动MDB库一样驱动SQL7数据库。因此,在数据库容量和健壮性上
应该是Access数据库无法比拟的。
我刚刚开始下载这个东西,打算好好花时间研究一下。
地址是:msdn.microsoft.com/vstudio/msde/
建议一看。
 
用流储存最好了,你可以让用户一起拖动一批文件不是很简单吗
 
用olecontainer显示的话,不用把Doc转化为rtf,下面是一个例子,若你非要用
richedit来显示的话,我得再写一段程序把word.doc转化为rtf.
procedure savetodb;
var
st:TStringStream;
begin
st := tstringstream.create('');
olecontainer1.createfromfile('c:/xxx.doc',true);//也可以是..('xx.doc',false);
olecontainer1.savetostream(st);
query1.sql.text := 'insert into TableX Doc_field values :Doc';
query1.parambyname('Doc').asblob := st.datastring;
query1.execsql;
st.free;
end;

procedure loadfromdb;
var
st:TStringStream;
blobsteam:Tblobstream;
begin
st:= tstringstream.create('');
blobStream := TBlobStream.Create(Table1Doc, bmRead);
if BlobStream.Size = 0 then begin
BlobStream.Free;
Exit;
end;
st.CopyFrom(BlobStream, BlobStream.Size);
st.position:=0;//可能直接
olecontainer1.loadfromstream(st);
//可能直接blobstream.position:=0,olecontainer1.loadfromstream(blobstream);也行
st.free;
BlobStream.Free;
end;
 
hubdog大侠,
那如果我的文件都直接存为*.rtf,用上面的写入库程序是不是也可以?
读出的时候是不是直接用RichEdit1的LoadFromStream就行了?
我不是一定要RichEdit,但是一旦用户没有安装word,岂不是很
悲惨?
另外一个问题, *.doc转为*.rtf,会损失什么东西吗?

Dick大侠,
单机的数据库,哪个比Access更好些? 现在这个东西急着做,来不及
研究新技术了。我也知道SQL Server不错,但是总不能发行程序的时候,也
要求人家去买正版的SQL Server呀,呵呵。

还忘了一个最关键的问题, 在OLE字段里面,能进行全文的检索吗? 如果不能,
我该怎么办?
 
很遗憾,在搞明白MSDE之前,单机版数据库最好的就应该是Access了。
不过,我看到许多Access数据库超过200兆以后就莫名其妙崩溃的事情,
所以要小心。
建议使用DiamondAccess构件访问数据库而不是BDE,因为该构件支持
许DAO底层操作,包括数据库的维护和修复。
 
如果已经存成rtf,用rxlib的RXdbrichedit最好,doc->rtf会丢失一些格式信息
存取用richedit.savetostream,loadfromstream就可以了,类似olecontainer。
 
谢谢几位的热心帮助! 现在明白了许多 :)
现在就是最后一个问题了:
在OLE字段里面,能进行全文检索吗?
如果不能,我该怎么办?
 
access中的OLE字段里面不能进行全文检索,
1)换sql 7.0 他支持全文检索.
2)挨个打开每个记录,读出OLE字段,find it.
不好意思:)
 
接受答案了.
 
后退
顶部