我用的是BDE压缩的一个函数,不过ADO肯定也行
等着

解决方案 »

  1.   

    事先建立:engine.create
    然后:engine.CompactDatabase(src_file,des_file,ole_tmp,ole_tmp,ole_tmp);
    但愿对你有启发 :)
      

  2.   

    注意下面的参数
    Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;
    下面是一个例子,它使用程序目录下的一个access数据库(和和,不要odbc,只要.exe和.mdb就行了),希望对一有帮助
    procedure TMainForm.FormCreate(Sender: TObject);
    var
    S:String;
    begin
    with ADOConnection do
    Begin
    Connected:=false;
    S:='Provider=Microsoft.Jet.OLEDB.4.0;Password="";User ID=Admin;Data Source="'+ExtractFilePath(Application.ExeName);
    S:=S+'Student.mdb";Mode=Share Deny None;Extended Properties="";';
    S:=S+'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;';
    S:=S+'Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;';
    S:=S+'Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don''t Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False';
    ConnectionString:=S;Connected:=true;
    End;
    ADODataSet.Active:=true;
    end;
      

  3.   

    var
    dao:olevariant;
    begin 
      Dao := CreateOleObject('DAO.DBEngine.36');
      Dao.CompactDatabase(Sourcedb, Compactdb);
    end;
      

  4.   

    strikeeagle(攻击鹰),你好,我用你的方法不行啊,Dao :=CreateOleObject'DAO.DBEngine.36');
    这一句不行,能不能再具体一点啊,
    还有, 我用的是ADODATASET连接的数据库,我对数据库进行压缩是肯定要断开对数据库的连接,
    请问各位怎么断开连接。我的ADODATASET的CONNECTIONSTRING是在程序设计期间设定的。
    我用ADODATASET1。CLOSE; ADODATASET1。DISCONTROL;ADODATASET1。CONNECTIONSTRING:=‘’都不行啊!!!