Конференция "Базы" » Размер базы Access
 
  • arhis (25.06.08 17:29) [0]
    Получаю данные в программу через ADO и заметил что через некторое время база через которую идет обмен (Access) пухнет просто в разы. Кто-нибудь знает что это такое и как привести базу в начальное состояние?
  • Ega23 © (25.06.08 17:31) [1]
    удалённые записи помещаются в "Корзину", а не удаляются вообще.
    Была там какая-то опция, то-ли упаковать базу, то-ли как-то ещё...
  • Правильный-Вася (25.06.08 17:34) [2]

    >  база через которую идет обмен

    если данные при обмене удаляются, потом на их место появляются новые и сначала, то размер со времемен стабилизируется, т.к. место в корзине начинает использоваться повторно
  • arhis (25.06.08 17:36) [3]
    То есть в базе данных Access есть "корзина"? И как до нее добраться?
  • Правильный-Вася (25.06.08 19:34) [4]

    >  как до нее добраться?

    с какой целью?
    если чистить - есть упаковка
    для других целей - не стоит оно того
  • arhis (27.06.08 16:55) [5]
    Ок, я хочу очистить все буферы и корзины в конце каждой сессии, как мне это 1сделать через TADOTable?
  • Johnmen © (27.06.08 16:57) [6]

    > как мне это 1сделать через TADOTable?

    Никак.
  • Правильный-Вася (27.06.08 17:08) [7]

    >  в конце каждой сессии

    это занятие для админа базы, а не пользователя, особенно если он не один
  • Сашик (29.06.08 22:18) [8]
    Попробуйте следующую функцию:
    (на всякий случай предварительно сохраните оригиналный *.mdb)


    resourcestring
     SJETENGINE = 'JRO.JetEngine';
    SQLCOMPACTSRC = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
     SQLCOMPACTSRC1 = 'x;Jet OLEDB:Engine type=5';

    function CompactAndRepair(const DB: String) : boolean;
     var V: OLEvariant;
    begin
      Result := True;
      try
        V:= CreateOLEObject(SJETENGINE);
        try
          V.CompactDatabase(SQLCOMPACTSRC + DB, SQLCOMPACTSRC + DB + SQLCOMPACTSRC1);
          DeleteFile(Pchar(DB));
          MoveFile(Pchar(DB + 'x'), Pchar(DB))
         finally
          v:= Unassigned
        end;
       except
        Result := False
      end;
    end;

  • Alex7 (30.06.08 14:40) [9]
    Если речь идет о редко выполняемой операции, то проще всего будет открывать базу самим Access и выполнять команду "Сжать и восстановить".
    Можно также настроить автоматическое сжатие и восстановление, которое будет происходить каждый раз при закрытии Access-а.
  • azamatufa © (07.07.08 16:45) [10]
 
Конференция "Базы" » Размер базы Access
Есть новые Нет новых   [134434   +28][b:0][p:0.001]