我试图修复access 数据库
代码如下
var
  strSource ,strDest : WideString;
begin
  // jetengine1 为tjetengine类的对象
  
  strSource := 'D:\Documents and Settings\Administrator\桌面\ljldb.mdb';
  strDest   := 'D:\Documents and Settings\Administrator\桌面\ljldb2.mdb';
  JetEngine1.CompactDatabase(strSource,strDest);但是运行的时候,出现"初始化字符串不符合ole db规定"的错误?实在不明白.各位大哥大姐,帮个忙!!!!!!!!!!!!!

解决方案 »

  1.   

    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;
      

  2.   

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

  3.   

    //=============================================================================
    // 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;
      

  4.   

    我想问一下,你是如何知道JRO.JetEngine的函数接口?