powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рост базы данных при каждом запуске
16 сообщений из 16, страница 1 из 1
Рост базы данных при каждом запуске
    #32268798
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит, такая ерундовина получилась :
До меня была создана база данных на Access-е 2000 с формами, отчетами и т. д.Но такое решение не подошло заказчику. Тогда решили оставить эту базу,
а интерфейс написать на C++Builder 6. Я удалил из акцессовского проекта
все лишнее (оставил только таблицы), но размер ее как был 25.6 МБ, так и остался. Тогда я создал новую базу данных и импортировал туда все таблицы.
Получился размер 1.77 МБ. Я ,довольный собой, начал тестировать свою билдеровскую программу. Причем у меня было готово только чтение данных,
а редактирования и дополнения еще не было (т. е. я ничего в базу не дополнял и не изменял, а только посылал различные запросы). И вдруг после
нескольких запусков моей проги размер базы стал 1.94 МБ. А после открытия
базы в Access-е размер стал 2.34 МБ.

Что-то я не понял в чем дело ?
Может надо какие-то настройки изменить в Access ?

Кстати первоначальная база как была 25.6 МБ, так и остается, сколько ее
не открывай. Но согласитесь, что 1.77 гораздо лучше, чем 25.6 с одним и тем же набором данных, к тому же планируется увеличение объема данных раз в 10 - 15.
Подскажите, что можно сделать.
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268809
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не удивитильно, что "решение (то бишь интрфейс) не подошло заказчику...решили оставить эту базу", а интерфейс написать на C++Builder 6", коль разработчик и не знает о Сжать/Восстановить (это в меню Сервис- Служебные программы. Есть соотвествующие методы для сжатия у DAO и у ADO
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268815
Shubnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дополнительное место занимается временными данными. Поэтому сколько не жми меньше чем необходимо ядру не будет.
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268816
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cauchy
В процессе работы база Access, насколько мне известно, всегда распухает. Поэтому ее приходится переодически "сжимать" - функция "сжать-восстановить" в Access. Вообще, если регулярно проводить эту процедуру, база работает гораздо устойчивее. Вот что было бы полезно - проводить эту процедуру не из Access, а из какой-то другой проги. Если напишешь такой прибамбас в C++, поделишься опытом?
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268828
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268830
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varan
Поделюсь, конечно. Тут мне написали про ADO, так что попробую сжимать при закрытии программы.
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268849
RVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где-то, когда-то, уже и не помню, скачал вот эту ф-цию.
Может пригодится.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Сжатие базы не выходя из неё¸
 Function Compact()
 Const CompactId As Long =  2071 
   With CommandBars.Add(, msoBarFloating, , True)
     .Controls.Add msoControlButton, CompactId, , , True
     DoEvents 'Не обязательно
     .Visible = True
     .Controls( 1 ).SetFocus
     DoEvents
     SendKeys  "~" 
   End With
 End Function
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268852
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor

А можешь подсказать, что нужно сделать с ADO компонентом (и с каким из них), чтобы сжать базу.

((-- Я как раз использую ADO для работы с базой.
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268862
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Cauchy
>А можешь подсказать, что нужно сделать с ADO компонентом (и с каким из них), чтобы сжать базу.

Могу http://www.sql.ru/faq/faq_topic.aspx?fid=155 см. п.6.3 - Вариант 3


==
Для чего FAQ писали? Не понятно.
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268910
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Senin Viktor

FAQ я прочитал сразу.
Только не понял как мне в Builder-е обратится к JRO.
Может надо сначала установить?
У меня C++Builder 6 со стандартным набором ADO.
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32268928
Фотография Senin Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>У меня C++Builder 6 со стандартным набором ADO.

Какой отстой С++ Не видит Microsoft Jet and Replication object 2.x Liblary (файлик msjro.dll), который с версии 2.1 входит в MDAC
Если есть МСДН то ищи HOWTO: Compact Microsoft Access Database Through ADO (ms-help://MS.MSDNQTR.2003JUL.1033/enu_kbadobj/adobj/230501.htm)
Если нет МСДН, то лови пример от туда на Visual C++


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
Visual C++: Compacting an Access Database via ADO
Besides #import, the Msado15.dll (MDAC2. 1 ), add the following #import statement to generate the wrapper classes
for JRO to your .cpp classes (alternatively, you can generate the wrapper classes more efficiently by using
the no_implementation and implementation_only attributes of the #import pre-processor statement):
#import  "C:\PROGRAM FILES\COMMON FILES\System\ado\MSJRO.DLL"  no_namespace 
					
Add the following (specifying your own source and destination database paths) to the .cpp file where you want to compact the database:
...
try
{
   IJetEnginePtr jet(__uuidof(JetEngine));
   jet->CompactDatabase(
          "Provider=Microsoft.Jet.OLEDB.4 . 0 ;Data Source=d:\\nwind2.mdb", 
          "Provider=Microsoft.Jet.OLEDB.4 . 0 ;Data Source=d:\\abbc.mdb;" \ 
          "Jet OLEDB:Engine Type=4 ");
}
catch(_com_error &e) 
{       
   ::MessageBox(NULL, (LPCTSTR)e.Description( ), "", MB_OK) ;    
}
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32269189
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varan

Посмотри http://www.olap.ru/desc/microsoft/borland_ado.asp#07
Там правда на Delphi примеры
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32269660
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Varan

Я нашел пример(точнее мне помогли на другом форуме) на
http://www.chinabcb.com/bbs/viewtopic.php?t=4817
Все почти работает, но ... при сжатии в Access-e из 25.6 МБ получается 1.74 МБ, а у меня получается 3.71 МВ.
Но это все же лучше чем ничего...
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32272189
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cauchy
Спасибо, может попробую, если Access-ом сжимать надоест.
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32325275
Фотография SiriusB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Какие глупости

запусти из оболочки следующую коммандную строку

C:\Progra~\Office\Msaccess.exe C:\proba.mdb /compact

и все делы :) Гы-ы :)
...
Рейтинг: 0 / 0
Рост базы данных при каждом запуске
    #32327120
Фотография Cauchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to SiriusB

Для твоего способа нужно иметь Акцесс, а моя прога будет работать и там где есть Акцесс и где его нет.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Рост базы данных при каждом запуске
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]