在Access数据库中新增大量数据再删除,数据库不会减小,还是新增后的那么大Access数据库中有 数据库实用工具->压缩和修复数据库来真正删除数据怎么在Delphi6中调用它或自已实现(我看不太可能:))请给出源码
解决方案 »
- 关于显示数据库内的图片
- 我有一个问题
- 突然间,觉得可笑
- Delphi中如何将存储在Access中的bmp图片读取出来?检索了好几个帖子,试了都没有成功,郁闷!
- 想做一个车辆定位系统有设备,想问一下有无此方面经验的兄弟关于通迅连com口要那方面的知识.
- @@@@@@@@@过来看美女拉@@@@@@@@@!!!!!!!
- 高手援助‘三层休系中,客户端程序运行问题?在另一台机运行客户端程序,提示应用服务器不能用'
- 谁知道向已有数据库中追加新字段的方法?
- 谁有Wise Installer 的安装程序密码,请提供我行吗?
- “插件”是什么时候用最好,我怎么一点思路也没有?
- 关于注册表操作的几个问题。。。。。。。。。〉〉〉〉〉〉〉〉〉〉〉〉
- 能不能将excel里的数据直接导入access数据库里!!
一、通过OLE方式创建
相信各位都用通过OLE方式访问Word、Excel文件的经历,具体我不说太多,直接把具体代码写出来就完了
在引用部分加入:
uses ComObj;
实现部分:
procedure TFormOffice.BitBtn1Click(Sender: TObject);
var
CreateAccess:OleVariant;
begin
CreateAccess:=CreateOleObject('ADOX.Catalog');
CreateAccess.Create('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\Aceco.mdb');
end; 说明:
1、在C:\下创建Aceco.mdb;
2、是Access2000格式,用Access97打不开;
3、系统需安装MDAC,这是好消息,客户不需安装Access也可以二、通过DBEngine创建
这才是关键中的关键,是我一定要写出来的原因!
各位是否还记得安装Delphi的时候,如果你选择自定义安装(我一般用Delphi写控件,所以当然是越小越好),会有很多安装选项,让你选择Access97或Access2000,还有MDAC等,问题就在这里!Delphi5.0中早就封装了现成的类,只是大家都没有注意而已它位于:
$Delphi5\Imports
目录下!
其中有DAO97.DCU文件,它是通过DAO350.DLL来完成的,其中的定义部分和DAO350.DLL如出一辙!OK,到现在,所有的一切都明白了(可惜我花了一天时间!)。那么具体实现起来就太方便了,具体过程如下:
在引用部分加入:
uses DAO97;
实现部分:
procedure TFormOffice.BitBtn4Click(Sender: TObject);
var
Engine:DBEngine;
begin
Engine:=CoDBEngine.Create;
Engine.CreateDatabase('c:\NewAccess.mdb',';LANGID=0x0804;CP=936;COUNTRY=0;',dbEncrypt);
end; 说明:
1、在C:\下创建NewAccess.mdb;
2、语言国家是简体中文;
3、压缩整理数据库用Engine.CompactDatabase('c:\invoice.mdb','c:\God.mdb','',0,'');就是将c:\invoice.mdb压缩整理成c:\God.mdb,剩下的只是将c:\invoice.mdb删除(DeleteFile('c:\invoice.mdb');),然后将c:\God.mdb重新命名(RenameFile('c:\God.mdb','c:\invoice.mdb');)即可。
const
sProvider='Provider=Microsoft.Jet.OLEDB.4.0;';
var
oJetEng:JetEngine;
begin
if password then
sOldMDB:=sProvider+'Data Source='+sOldMDB+';jet oledb:database password="'+psw+'"'
else
sOldMDB:=sProvider+'Data Source='+sOldMDB;
if password then
sNewMDB:=sProvider+'Data Source='+sNewMDB+';jet oledb:database password="'+psw+'"'
else
sNewMDB:=sProvider+'Data Source='+sNewMDB;
try
oJetEng:=CoJetEngine.Create;
oJetEng.CompactDatabase(sOldMDB, sNewMDB);
oJetEng:=Nil;
Result:=True;
except
oJetEng:=Nil;
Result:=False;
end;
end;
{11.CompactAndRepair(压缩Access数据库,用到JRO_TLB单元,可按下面方法加入) }
{ a) 在Delphi IDE中选择Project - Import Type Library. }
{ b) 往下翻直到你找到“Microsoft Jet and Replication Objects 2.1 Library”.}