?? accesscompact.dpr
字號:
program ACCESSCOMPACT;
// ***************************************************************************
//
// AccessCompact compacts and repairs Access 97 and Access 2000 databases.
//
// Author: David Simpson (drs@ihug.com.au), 19 Feb 2000
//
// Minor changes: Bob Wasaff (bwasaff@suscom.net), 29 Sep 00 2000
// David Simpson, 30 Sep 2000
// Microsoft Jet 4.0 ADO 2.x
// ***************************************************************************
{$APPTYPE CONSOLE}
uses
SysUtils,
ActiveX,
JRO_TLB,
ADODB_TLB in 'D:\Program Files\Borland\Delphi5\Imports\ADODB_TLB.pas';
// 'Microsoft Jet and Replication Objects 2.5 Library' or later
// C:\Program Files\Common Files\System\ADO\msjro.dll
procedure CompactDB(const DBname, DBtype: string);
var
MyJetEngine: JetEngine;
strDataSource,
strDataDest,
strDataDestName: string;
begin
if not FileExists(DBname) then
begin
Writeln ('錯誤: 未找到文件 ', DBName);
// writeln('Error: ''', DBName, ''' not found.');
exit;
end;
// delete any previous temporary mdb file
strDataDestName := ExtractFilePath(DBname) + 'temp.mdb';
if FileExists(StrDataDestName) then
begin
DeleteFile(strDataDestName);
writeln('刪除用過的臨時文件 ', strDataDestName);
end;
strDataSource := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + DBname + ';';
strDataDest := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + strDataDestName + ';';
// default to Access 2000 format unless 97 format is specified
{ default changed 30 Sep 2000 DRS }
if DBtype = '97' then
// Use Engine Type 4 for Access 97 db
strDataDest := strDataDest + 'Jet OLEDB:Engine Type=4'
else
// Use Engine Type 5 for Access 2000 db
strDataDest := strDataDest + 'Jet OLEDB:Engine Type=5';
MyJetEngine := CoJetEngine.Create();
try
MyJetEngine.CompactDatabase(strDataSource, strDataDest);
writeln(DBname, ' 被壓縮到文件 ', strDataDestName + '。');
MyJetEngine := nil;
if DeleteFile(DBname) then
begin
writeln(DBname, ' 被清除。');
if RenameFile(strDataDestName, DBName) then
writeln(strDataDestName, ' 被恢復成 ', DBname + '。!!!!!!!成功完成。')
else
writeln('錯誤: ', strDataDestName, ' 不能被恢復到 ', DBname, '。');
end
else
writeln('錯誤: ', DBname, ' 不能被清除。');
except
on E: Exception do writeln('錯誤: ', E.Message);
end
end;
begin
if ParamCount = 0 then
begin
writeln('參數錯誤: 查看幫助信息請輸入 "ACCESSCOMPACT [/]?" '); {Changed 29 Sep 2000 RVW}
halt;
end;
if (ParamStr(1) = '/?') or {Changed 29 Sep 2000 RVW}
(ParamStr(1) = '?') then
begin
write('ACCESS 97/2000 數據 壓縮修復 程序。');
writeln(' 操作完成后將重建數據庫文件中的自動增量索引。');
writeln('系統支持:Microsoft Jet and Replication Objects 2.5 Library or later');
writeln;
writeln('ACCESSCOMPACT [drive:][path]filename [[/,-]97|2000]'); {Changed 29 Sep 2000 RVW}
writeln;
writeln(' [drive:][path]filename 指定要操作的 ACCESS 97/2000 數據庫文件。');
writeln(' [97|2000] 數據庫文件版本為 ACCESS 97 或 ACCESS 2000。缺省為 ACCESS 2000。');
writeln;
write('該文件將自動轉到 命令行 模式下執行。');
writeln('該文件為 命令行 模式設計,也可直接作為 WINDOWS NT 下的控制調度程序運行。');
writeln('感謝: David Simpson, 30 Sep 2000 ');
writeln('程序編制:趙清偉(Qingwei Zhao) 2002 CopyRight LuckSunbird 。 ');
end
else
begin
CoInitialize(nil);
if (ParamCount = 2) then
// default to Access 2000 format unless 97 format selected
if (Paramstr(2) = '-97') or {Changed 29 Sep 2000 RVW}
(Paramstr(2) = '/97') or
(Paramstr(2) = '97') then
CompactDB(ParamStr(1), '97')
else
CompactDB(ParamStr(1), '2000')
else
CompactDB(ParamStr(1), '2000');
end
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -