adox的jetenginee的compactdatabase方法

解决方案 »

  1.   

    http://www.csdn.net/Expert/forum.asp?typenum=8&searchKeys=%D1%B9%CB%F5&roomid=3&author=&tabletype=now你看看这问题有多少人问过了。下次问问题先搜索
      

  2.   

    uses ComObj;procedure TForm1.Button1Click(Sender: TObject);
    var
      X:OleVariant;
      sourcefiles,tempfiles:string;
    begin
      sourcefiles:='E:\xll\model.mdb';
      tempfiles:='E:\xll\temp.mdb';
      try
        X := createoleobject('JRO.JetEngine');
        X.CompactDatabase('Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+sourcefiles,'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+tempfiles);
        deletefile(sourcefiles);
        renamefile(tempfiles,sourcefiles);
        Messagedlg('OK!',mtwarning,[mbok],0);
        if fileExists(sourcefiles) and FileExists(tempfiles) then
          if deleteFile(sourcefiles)then RenameFile(tempfiles,sourcefiles);
        exit;
      except
        Messagedlg('主数据库正在被他人或应用程序使用,请稍后再试!',mtwarning,[mbok],0);
      end;
    end;
      

  3.   

    兄弟我才疏学浅,有个问题解决不了,希望各位用过access开发的侠义之士出手相帮:
     我用一tADOConnection连接access数据库,ADOTAble连接adoconnection,ADOTable的tablename属性锁定一个表,但是在程序运行时只要第一次打开ADOTable或将其属性active设为真,便会出现如下异常:"Could not convert variant of type (null)into type (string)",我知道这是数据库的字段与应用程序输入域冲突,但换成其他delphi自带的数据库没有这种问题,我的access数据库的字段属性类型有:文本,日期,货币,数字。我不知道是什么原因,但是第一次出现异常后,以后再打开ADOTable不会有事,请各位帮帮忙!!不胜感激!!