用ADOTable 连接ACCESS数据库 以设置为缓存更新模式,插入和编辑状态都好使,
但删除时是表面是删除的但数据库里没删除,请大家告诉我

解决方案 »

  1.   

    function DaoActive(var DaoObject:OleVariant):Boolean;
    begin
      Result:=False;
      try
        DaoObject:=GetActiveOleObject('DAO.DBEngine.36');
        Result:=True;
      except
        try
          DaoObject:=CreateOleObject('DAO.DBEngine.36');
          Result:=True;
        except
          DaoObject:=Null;
        end;
      end;
    end;//压缩Access数据库
    function DaoCompactDB(const FileName:string):Boolean;
    var
      db:OleVariant;
      TempFile:string;
    begin
      Result:=False;
      try
        if not DaoActive(db) then
          Exit;
        try
          TempFile:=ExtractFilePath(FileName)+'msaTemp.mdb';
          db.CompactDatabase(FileName,TempFile);
          DeleteFile(FileName);
          RenameFile(TempFile,FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;//修复Access数据库
    function DaoRepairDB(const FileName:string):Boolean;
    var
      db:OleVariant;
    begin
      Result:=False;
      try
        if not DaoActive(db) then
          Exit;
        try
          db.RepairDatabase(FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;