access数据库的压缩,我可以直接调用access里面的那个应用程序吗?? access数据库的压缩,我可以直接调用access里面的那个应用程序吗??请赐教!,谢谢啊 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 function TfrmMain.CompactAndRepair(sOldMDB, sNewMDB, psw: string; password: boolean): Boolean;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; function TFrmMain.CompactDatabase(const AFileName, APassWord: string): Boolean;const SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' + 'Jet OLEDB:Database Password=%s;';var SPath: string; SFile: array[0..254] of Char; STempFileName: string; JE: OleVariant; function GetTempDir: string; var Buffer: array[0..MAX_PATH] of Char; begin ZeroMemory(@Buffer, MAX_PATH); GetTempPath(MAX_PATH, Buffer); Result := IncludeTrailingBackslash(StrPas(Buffer)); end;begin Result := False; SPath := GetTempDir; //取得Windows的Temp路径 GetTempFileName(PChar(SPath), '~ACP', 0, SFile); //取得Temp文件名,Windows将自动建立0字节文件 STempFileName := SFile; //PChar->String if not DeleteFile(STempFileName) then Exit; //删除Windows建立的0字节文件 try JE := CreateOleObject('JRO.JetEngine'); //建立OLE对象,函数结束OLE对象超过作用域自动释放 OleCheck(JE.CompactDatabase(Format(SConnectionString, [AFileName, APassWord]), Format(SConnectionString, [STempFileName, APassWord]))); //压缩数据库 //复制并覆盖源数据库文件,如果复制失败则函数返回假,压缩成功但没有到函数的功能 Result := CopyFile(PChar(STempFileName), PChar(AFileName), False); DeleteFile(STempFileName); //删除临时文件 except //压缩失败 end;end; ACCESS技巧集作者:ysai转载请保持文章完整并标明出处1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)以下代码在WIN2K,D6,MDAC2.6下测试通过,编译好的程序在WIN98第二版无ACCESS环境下运行成功.//声明连接字符串Const SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;' +'Jet OLEDB:Database Password=%s;';//=============================================================================// Procedure: GetTempPathFileName// Author : ysai// Date : 2003-01-27// Arguments: (None)// Result : string//=============================================================================function GetTempPathFileName():string;//取得临时文件名var SPath,SFile:array [0..254] of char;begin GetTempPath(254,SPath); GetTempFileName(SPath,'~SM',0,SFile); result:=SFile; DeleteFile(result);end;//=============================================================================// Procedure: CreateAccessFile// Author : ysai// Date : 2003-01-27// Arguments: FileName:String;PassWord:string=''// Result : boolean//=============================================================================function CreateAccessFile(FileName:String;PassWord:string=''):boolean;//建立Access文件,如果文件存在则失败var STempFileName:string; vCatalog:OleVariant;begin STempFileName:=GetTempPathFileName; try vCatalog:=CreateOleObject('ADOX.Catalog'); vCatalog.Create(format(SConnectionString,[STempFileName,PassWord])); result:=CopyFile(PChar(STempFileName),PChar(FileName),True); DeleteFile(STempFileName); except result:=false; end;end;//=============================================================================// Procedure: CompactDatabase// Author : ysai// Date : 2003-01-27// Arguments: AFileName,APassWord:string// Result : boolean//=============================================================================function CompactDatabase(AFileName,APassWord:string):boolean;//压缩与修复数据库,覆盖源文件var STempFileName:string; vJE:OleVariant;begin STempFileName:=GetTempPathFileName; try vJE:=CreateOleObject('JRO.JetEngine'); vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]), format(SConnectionString,[STempFileName,APassWord])); result:=CopyFile(PChar(STempFileName),PChar(AFileName),false); DeleteFile(STempFileName); except result:=false; end;end; 如何获知sql server 2000 中的数据库 Delphi真的末路了么? 我的机器现在一运行delphi或delphi写的程序就关机重启,大家有什么解决办法吗? fastreport打印问题? 请大家支持我的论坛 关于DLL封装窗体的问题? 如何把系统其他form里焦点的文字复制到自己的程序里的组件 为什么listbox无法显示??的代码问题 谁会directx show 实现 视频捕获(效果要好) 鼠标经过button的事件是OnMouseMove,求鼠标离开的事件或能解决此问题的代码 请问怎样在指定的文件夹中查找一个文件,并把它拷贝到另一个文件夹中 跪拜求教,帮顶有分
password: boolean): Boolean;
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;
APassWord: string): Boolean;
const
SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
+ 'Jet OLEDB:Database Password=%s;';
var
SPath: string;
SFile: array[0..254] of Char;
STempFileName: string;
JE: OleVariant; function GetTempDir: string;
var
Buffer: array[0..MAX_PATH] of Char;
begin
ZeroMemory(@Buffer, MAX_PATH);
GetTempPath(MAX_PATH, Buffer);
Result := IncludeTrailingBackslash(StrPas(Buffer));
end;begin
Result := False;
SPath := GetTempDir; //取得Windows的Temp路径
GetTempFileName(PChar(SPath), '~ACP', 0, SFile); //取得Temp文件名,Windows将自动建立0字节文件
STempFileName := SFile; //PChar->String
if not DeleteFile(STempFileName) then Exit; //删除Windows建立的0字节文件
try
JE := CreateOleObject('JRO.JetEngine'); //建立OLE对象,函数结束OLE对象超过作用域自动释放
OleCheck(JE.CompactDatabase(Format(SConnectionString, [AFileName, APassWord]),
Format(SConnectionString, [STempFileName, APassWord]))); //压缩数据库
//复制并覆盖源数据库文件,如果复制失败则函数返回假,压缩成功但没有到函数的功能
Result := CopyFile(PChar(STempFileName), PChar(AFileName), False);
DeleteFile(STempFileName); //删除临时文件
except
//压缩失败
end;
end;
作者:ysai
转载请保持文章完整并标明出处1.DELPHI中操作ACCESS数据库(建立.mdb文件,压缩数据库)
以下代码在WIN2K,D6,MDAC2.6下测试通过,
编译好的程序在WIN98第二版无ACCESS环境下运行成功.
//声明连接字符串
Const
SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
+'Jet OLEDB:Database Password=%s;';//=============================================================================
// Procedure: GetTempPathFileName
// Author : ysai
// Date : 2003-01-27
// Arguments: (None)
// Result : string
//=============================================================================
function GetTempPathFileName():string;
//取得临时文件名
var
SPath,SFile:array [0..254] of char;
begin
GetTempPath(254,SPath);
GetTempFileName(SPath,'~SM',0,SFile);
result:=SFile;
DeleteFile(result);
end;//=============================================================================
// Procedure: CreateAccessFile
// Author : ysai
// Date : 2003-01-27
// Arguments: FileName:String;PassWord:string=''
// Result : boolean
//=============================================================================
function CreateAccessFile(FileName:String;PassWord:string=''):boolean;
//建立Access文件,如果文件存在则失败
var
STempFileName:string;
vCatalog:OleVariant;
begin
STempFileName:=GetTempPathFileName;
try
vCatalog:=CreateOleObject('ADOX.Catalog');
vCatalog.Create(format(SConnectionString,[STempFileName,PassWord]));
result:=CopyFile(PChar(STempFileName),PChar(FileName),True);
DeleteFile(STempFileName);
except
result:=false;
end;
end;//=============================================================================
// Procedure: CompactDatabase
// Author : ysai
// Date : 2003-01-27
// Arguments: AFileName,APassWord:string
// Result : boolean
//=============================================================================
function CompactDatabase(AFileName,APassWord:string):boolean;
//压缩与修复数据库,覆盖源文件
var
STempFileName:string;
vJE:OleVariant;
begin
STempFileName:=GetTempPathFileName;
try
vJE:=CreateOleObject('JRO.JetEngine');
vJE.CompactDatabase(format(SConnectionString,[AFileName,APassWord]),
format(SConnectionString,[STempFileName,APassWord]));
result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
DeleteFile(STempFileName);
except
result:=false;
end;
end;