1.我的access打开是有密码的,如何动态的打开它?假设密码是cxjADOConnection1.ConnectionString:=‘Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\Administrator\My Documents\zzysystem.mdb;Persist Security Info=False’2.用什么指令“压缩和修复数据库”

解决方案 »

  1.   

    第一个问题:'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=你的数据库;jet oledb:database password=你的密码;Persist Security Info=false';
    第二个问题:代码如下:
    uses dao97,dao2000;procedure CompactMdbDatabase(srcDbname,dstDbname,oldpwd,newpwd:string;bAccess97:boolean=true);
    var idbEngine:_dbEngine;
    begin
      if oldpwd <>'' then oldpwd := ';pwd='+oldpwd;
      if newpwd <>'' then newpwd := ';pwd='+newpwd;
      if bAccess97 then
      begin
        idbengine := CreateComObject(dao97.CLASS_DBEngine) as _DBEngine;
        idbEngine.CompactDatabase(srcDbname,dstDbname,newpwd,dbVersion30,oldpwd);
      end else
      begin
        idbengine := CreateComObject(dao2000.CLASS_DBEngine) as _DBEngine;
        idbEngine.CompactDatabase(srcDbname,dstDbname,newpwd,dbVersion40,oldpwd);
      end;
    end;
      

  2.   

    压缩:
    var
      vJE: OleVariant;
      string1, string2, TempFileName, FileName: string;
          TempFileName := ExtractFilePath(Application.ExeName) + 'sjgx02.mdb';
          FileName := ExtractFilePath(Application.ExeName) + 'sjgx.mdb';
          string1 := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + filename + ';Jet OLEDB:Database Password='''';';
          string2 := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' + TempFileName + ';Jet OLEDB:Database Password='''';';
          vJE := CreateOleObject('JRO.JetEngine');
          vJE.CompactDatabase(string1, string2);
          CopyFile(PChar(TempFileName), pchar(filename), false);
          DeleteFile(TempFileName);