Delphi中使用ACCESS技巧集

字號:

ACCESS技巧集 cwxiao888(收藏)
    1.DELPHI中*作ACCESS數(shù)據(jù)庫(建立.mdb文件,壓縮數(shù)據(jù)庫)
    以下代碼在WIN2K,D6,MDAC2.6下測試通過,
    編譯好的程序在WIN98第二版無ACCESS環(huán)境下運行成功.
    //在之前uses ComObj,ActiveX
    //聲明連接字符串
    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(PChar(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;
    //壓縮與修復數(shù)據(jù)庫,覆蓋源文件
    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;
    //=============================================================================
    // Procedure: ChangeDatabasePassword
    // Author : ysai
    // Date : 2003-01-27
    // Arguments: AFileName,AOldPassWord,ANewPassWord:string
    // Result : boolean
    //=============================================================================
    function ChangeDatabasePassword(AFileName,AOldPassWord,ANewPassWord:string):boolean;
    //修改ACCESS數(shù)據(jù)庫密碼
    var
    STempFileName:string;
    vJE:OleVariant;
    begin
    STempFileName:=GetTempPathFileName;
    try
    vJE:=CreateOleObject('JRO.JetEngine');
    vJE.CompactDatabase(format(SConnectionString,[AFileName,AOldPassWord]),
    format(SConnectionString,[STempFileName,ANewPassWord]));
    result:=CopyFile(PChar(STempFileName),PChar(AFileName),false);
    DeleteFile(STempFileName);
    except
    result:=false;
    end;
    end;