怎么收回已分配了的数据库空间呢?还有程序中创建表时, 能不能指定大小呢?
还有个问题,我想在程序处理数据时,弹出一个form ,属性设为stayontop,用来防止用户误操作,
但是发现运行时,form上的提示语句根本无法看到,怎么解决呢

解决方案 »

  1.   

    用Access压缩工具或者通过代码也可以。
    D7中已经有这样组件,代码就不用这么复杂了。function TAccessApp.CreateEngine(var DBEngine: OleVariant): Boolean;
    begin  try
        DBEngine := Unassigned;
        DBEngine := CreateOleObject('DAO.DBEngine.36');
        SetLastErrInfo('创建数据库操作对象成功!');
        Result := TRUE;
      except
        DBEngine := Unassigned;
        SetLastErrInfo('创建数据库操作对象出现异常!');
        Result := FALSE;
      end;end;//压缩数据库
    function TAccessApp.CompactDB(FileName: String; Password: OleVariant): Boolean;
    var
      dbEngine: OleVariant;
      dbLang: OleVariant;
      dbOption: OleVariant;
      Path,tmpFileName: String;
    begin  dbLang := '';
      Path := ExtractFilePath(FileName);
      tmpFileName := Path + FormatDateTime('yyyymmddhhnnss',Now) + '.mdb';
      Result := FALSE;
      try
        if CreateEngine(dbEngine) then
        begin
          if Password<>Unassigned then
          begin
            Password := ';pwd='+Password;
          end;
          dbEngine.CompactDatabase(FileName,tmpFileName,dbLang,dbOption,Password);
          DeleteFile(FileName);
          RenameFile(tmpFileName,FileName);
          SetLastErrInfo('数据压缩完毕!');
          Result := TRUE;
        end;
      except
        SetLastErrInfo('数据库 '+FileName+' 压缩失败,有异常出现!');
        dbEngine := Unassigned;
      end;  end;
      

  2.   

    从程序中调用JETCOMP.exe就会压缩数据库.
      

  3.   

    怎么从程序中调用JETCOMP.exe呢