⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 untcompact.pas

📁 delphi制作的帮助学习软件
💻 PAS
字号:
{*******************************************************}
{                                                       }
{       单元名称: UntCompact                            }
{       创建日期: 2005-08-21                            }
{       摘要说明: ACCESS数据库压缩操作函数              }
{                                                       }
{       详细说明:                                       }
{                                                       }
{       参  阅:                                       }
{                                                       }
{       已知问题:                                       }
{                                                       }
{       待作事项:                                       }
{                                                       }
{       作  者: 胡孟杰                                }
{       Copyright (C) 2005 FdAuto                       }
{       当前版本: 1.0                                   }
{       版本历史:                                       }
{                                                       }
{*******************************************************}
unit UntCompact;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComObj, ActiveX;

function GetTempPathFileName(): ShortString; stdcall;
function CreateAccessFile(FileName: string; PassWord: string = ''): boolean;
  stdcall;
//压缩ACCESS数据库
function CompactDatabase(AFileName, APassWord: string): boolean; stdcall;

implementation

const
  SConnectionString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;'
    + 'Jet OLEDB:Database Password=%s;';

  {==========================================================================
   函数名:    GetTempPathFileName
    功  能:    取得临时文件名
    参 数:    无
    返回值:    临时文件名
    作 者:    胡孟杰
    日 期:    2005.08.21
  ==========================================================================}

function GetTempPathFileName(): ShortString;
var
  SPath, SFile      : array[0..254] of char;
begin
  GetTempPath(254, SPath);
  GetTempFileName(SPath, '~SM', 0, SFile);
  Result := SFile;
  DeleteFile(Result);
end;
{==========================================================================
 函数名:    CreateAccessFile
  功  能:    建立Access文件,如果文件存在则失败
  参 数:    FileName:String;PassWord:string='',数据库文件名,数据库密码
  返回值:    true,false
  作 者:    胡孟杰
  日 期:    2005.08.21
==========================================================================}

function CreateAccessFile(FileName: string; PassWord: string = ''): boolean;
var
  STempFileName     : string;
  vCatalog          : OleVariant;
begin
  STempFileName := GetTempPathFileName;
  //GetTempPathFileName(PChar(STempFileName));
  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;
{==========================================================================
 函数名:    CompactDatabase
  功  能:    压缩与修复数据库,覆盖源文件
  参 数:    AFileName,APassWord:string,数据库文件名,数据库密码
  返回值:    true,false
  作 者:    胡孟杰
  日 期:    2005.08.21
==========================================================================}

function CompactDatabase(AFileName, APassWord: string): boolean;
var
  STempFileName     : string;
  vJE               : OleVariant;
begin
  STempFileName := GetTempPathFileName;
  //GetTempPathFileName(PChar(STempFileName));
  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;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -