powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сжатие базы, помогите!!!
42 сообщений из 42, показаны все 2 страниц
Сжатие базы, помогите!!!
    #32182146
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Помогите пожалуйста разобратся с сжатием базы. Нарыл в Help что вроде бы надо использовать функцию CompactDatabase, но она работает при условии что сжимаемая база закрыта. А как же я могу запустить функцию если сама база закрыта?
Есть ли какой выход? Никак не могу эту проблему решить, помогите!!!!!!!!!!!
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32182194
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Должно быть две базы: в одной находимся, другую сжимаем. Кстати, если система разделена на программу и данные, то так и получается: находимся в базе с программой, сжимаем базу с данными.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32182206
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри \r
При удаление размер файла не уменьшается. Там несколько реализаций прдложено
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32187798
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне больше понравился Нуф-нуфовский вариант, но он у меня почему то не работает. С чего бы это?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32187823
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хде мой шаманский бубен? :)

Ну так откомпилируй, прогони в пошаговом режиме и подай сюда строчку и сообщение об ошибке :)
//сможет ответить тока завтра... Хотя и без меня разберутся
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32187931
iska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В ветке, ссылку на которую дал Нуф-Нуф, Lescha_A запостил функцию Autocompact().
Сам пользуюсь именно ею [где взял не помню:-(].
Имхо, до сих пор это идеальное решение для неразделенной бд. Это фактически вызов встроенного метода Compact and Repair Database из меню Tools.
>EDUDK01 при условии что сжимаемая база закрыта"
>Владимир Саныч Должно быть две базы: в одной находимся, другую сжимаем.
Нет. БД не должна быть обязательно закрыта при использовании вышеуказанной функции.
1. Т.е. реально повесить эту функция на кнопку "Выход" (скажем, в главной кнопочной форме) или на закрытие главной кнопочной формы и т.д.
2. Сжатие может не произойти, если в момент вызова функции будут открыты те или иные объекты текущей бд (таблицы, рекордсеты, связанные формы и т.п.).
3. Т.к. скорее всего это будет делаться на выходе, то в конце просто добавить Application.Quit.
4. Если п.3 не используется и возникает ситуация в п.2, то вы получите безымянную менюшку с безымянной кнопкой на панели инструментов.

Обработку вышеописанных ситуаций и график обслуживания добавляем по вкусу.

Не проверял, но если неразделенная база - многопользовательская, наверное, придется добавить проверку подключения других пользователей, хотя, по-моему, даже при отстутствии монопольного доступа вызов этой функции ошибки не сгенерирует.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189166
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуф-Нуфу: прогоняю в пошаговом режиме, никаких ошибок не выдает, но база при этом не сжимается. Пробовал совсем уж идиотский вариант, копирую текущий файл- 1 в файл-2. Затем сжимаю файл-2 в файл-3. Перезаписываю файл-3 в файл-1 и убиваю файл-2 и файл-3. Никакого результата.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189188
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Странно... У меня этот код уже года 2 работает... А может скинуть ВСЮ функцию/процедуру сюда?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189195
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В смысле:
А можеШ скинуть?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189248
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это вот мои художества:

Dim objFileSystem As Object
Dim myCurrentDB As String
Dim myNewDB1 As String
Dim myNewDB2 As String

myCurrentDB = "C:\WINNT\Profiles\edudk01\Desktop\db1.mdb"
myNewDB1 = "C:\WINNT\Profiles\edudk01\Desktop\db2.mdb"
myNewDB2 = "C:\WINNT\Profiles\edudk01\Desktop\db3.mdb"

Set objFileSystem = CreateObject("Scripting.FileSystemObject")

objFileSystem.CopyFile myCurrentDB, myNewDB1, True

DBEngine.CompactDatabase myNewDB1, myNewDB2, dbLangCyrillic

objFileSystem.CopyFile myNewDB2, myCurrentDB, True

Kill myNewDB1
Kill myNewDB2

Set objFileSystem = Nothing

А предидущий "нуфовский" код я просто вставлял целиком из примера в модуль и вызывал процедуру из формы. Может там процедуру обработки ошибок как-нибудь специально описать надо?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189304
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хм... Вроде все пральна и логично... В обработчике ошибок пока добавлять ниче не надо (коль скоро у Вас ошибок и не возникает).
Што я могу предположить?
1. Могет быть что NT по-своему как-то понимает "копировать файл"?
2. А могет быть что Акс под NT по-своему как-то понимает "Сжать/восстановить"?
3. А могет быть Вы сами как-то по своему понимаете (оцениваете) сжатие БД? Не подумайте, что я стебаюсь или вообще пытаюсь как-нить ущемить чье-либо достоинство, но... Вы точно уверены, что БД не была сжата одним из тестовых запусков, а теперь уже ей и сжиматься то некуда? Если вы уверены, то извиняюсь 100 разов, а ежли нет, то попробуйте добавить в БД много-пре-много записей (запросом, конешна:), а затем грохните их, после чего замерьте массу/объем, после чего запустите процедуру, и еще один замер... И вообще, как вы оцениваете "сжалась" она или не "сжалась"?
//ниче на ум не приходит... вроде выполняется без ошибок, а не выполняется совсем... хм...
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189359
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечаю по порядку:

1. Не думаю, файлы копируются без проблем.
2. Тоже не то, если я допустим просто командно сжимаю из данной базы какую либо другую то все работает (из Файл-1 сжимаем Файл-2 в Файл-3).
3. Добавляю 100 новых записей, смотрю размер базы (200 кб). Удаляю все 100 записей, смотрю размер базы (200 кб).
А. Сжимаю базу из "вручную" из меню, смотрю размер базы (148 кб).
Б. Сжимаю базу програмно, смотрю размер базы (200 кб).

Я в чем то неправ?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189366
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А нет ли в этой программе On Error Resume Next?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189376
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Санычу- в приведенном мной примере процедуры обработки ошибок нет совсем. В "нуфовском" примере он есть.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189390
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> в приведенном мной примере процедуры обработки ошибок нет совсем.

А в вызывающей процедуре?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189392
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тоже нет
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189396
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Интересно посмотреть на файлы и их размеры после каждого шага. Особенно после DBEngine.CompactDatabase.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189397
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В "нуфовском" примере его тоже нет! То есть он есть, но он отсылает к обработчику, а не Resume Next!... Хм... все ж таки... Хрень какая-та! Ошибок нет, действий нет... Мыслей нет... Ничего нет!
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189430
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переустановили мы Аксес (таже версия, другой диск), все заработало.
Однако... Всем ОГРОООООМНОЕ спасибо!
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189436
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Э-э-э-э-э! вах... А я уж было чуть... Саныч, спасибо за поддержку... //пошел лобать понятную версию "нуф-нуфовского" кода
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189456
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Саныч протягивает руку из Израиля и пожимает Нуфу пятачок. Зрелище, кто бы видел...
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189464
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Угу Особенно с учетом того, что пятак у Нуфа сопливый (еще:) Гы...
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189467
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Это менее важно. Важнее, что у Израиля отношения со свининой особенные.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189513
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А он кошерная свинья :) (это только шутка, миллион раз извините если что)
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189524
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Да чего извиняться, я-то согласен. :^) Пусть Нуф подтвердит, что извиняться не надо.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189651
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я еще наеду щаз! Не по поводу свинины, кнешна :)
Вы, EDUDK01, обманули нас чтоль? млин.? Вы текущую базу сжимаете? И как? сжимается? млин... "нуфовским"вариантом можно только другую бд сжать... А так как у меня все проекты "деленые", то я об этой фишке запамятовал... А щаз, готовя FAQ напоролся... Нука, EDUDK01, поближе, поближе...
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189689
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем "нуфовским"? Я своим "идиотским" вариантом сжимаю базу. Взяли вот сразу и обвинили во всем...
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189693
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда просветите нас, каким "идиотским" способом вы сжимаете ТЕКУЩУЮ базу?
//никаких обвинений... догадки одни :)
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189696
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim objFileSystem As Object
Dim myCurrentDB As String
Dim myNewDB1 As String
Dim myNewDB2 As String

myCurrentDB = "C:\WINNT\Profiles\edudk01\Desktop\db1.mdb"
myNewDB1 = "C:\WINNT\Profiles\edudk01\Desktop\db2.mdb"
myNewDB2 = "C:\WINNT\Profiles\edudk01\Desktop\db3.mdb"

Set objFileSystem = CreateObject("Scripting.FileSystemObject")

objFileSystem.CopyFile myCurrentDB, myNewDB1, True

DBEngine.CompactDatabase myNewDB1, myNewDB2, dbLangCyrillic

objFileSystem.CopyFile myNewDB2, myCurrentDB, True

Kill myNewDB1
Kill myNewDB2

Set objFileSystem = Nothing
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189707
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И что, на строке objFileSystem.CopyFile myNewDB2, myCurrentDB, True (копирование уже сжатого файла на место ТЕКУЩЕГО) не вываливается ошибка №70 "Permission denied!"?
Хм... Хээээээээээээээлп!!!! Теперя у меня не работает!!! Может тоже офис снести?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189714
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет никакой ошибки, все работает как часы, хотя код ИМХО плебейский.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189859
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы абсолютно уверены, что мы подразумеваем под "ТЕКУЩАЯ БД" ту БД, из которой выполняется сжатие (в которой работает наша процедура сжатия)?
//просто так... лишний раз убедиться в ясной постановке задачи...

з.ы. и что есть "плебейский"?
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189918
Alexus12
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ!
Это и правда интересно.
Получается, можно копировать базу из самой себя?
И сжимать? ОТКРЫТУЮ?!
И ПЕРЕЗАПИСЫВАТЬ на то же место?!!

ПРАВДА, ЧТО ЛИ? 8-()
Кто еще пробовал, отзовитесь!
Нужны мысли по поводу "бэкапа по расписанию", уже думал внешнее приложение писать и по выходе его стартовать...
Или винрар...
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32189921
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Получается, можно копировать базу из самой себя?
И сжимать? ОТКРЫТУЮ?!
И ПЕРЕЗАПИСЫВАТЬ на то же место?!!

А хрен ли нам кабанам (Нуф-Нуф привет )
Есть у тебя база db1.mdb
Создаешь в нотепаде файл, называешь его db1.mdb и копируешь в то место где база лежит. Очень даже скопируется. Админы в шоке, а ты сидишь и радуешься как хорошо база пожалась
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32190199
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуф-нуфу:

Алгоритм действий:

Из Файл-1 запускаем процедуру:
1. Копировать Файл-1 в Файл-2
2. Сжимаем Файл-2 в Файл-3
3. Перезаписываем Файл-3 в Файл-1
4. Убиваем Файл-2 и Файл-3

Все работает без ошибок, проверено на Аксес 2000 и Аксес ХР.
Насчет кода, я имел ввиду что данный вариант наверное не самое рациональное решение.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32190215
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мюнхаузены блин. Сами себя за волосы научились вытаскивать из болота
Ну как можно работая в Файл1 копировать поверх Файла1 что-то другое? Ну позволяет это аксес, но это же не повод этим пользоваться.
А после копирования захочет какой-либо объект сохраниться - и кирдык, нераспознаваемый формат. Вам оно надо - так сжимать базу, что потом восстанавливать придется?

Только что попробовал описанную методику, только не програмно, а ручками. Т.е. открыл базу, скопировал ее в другое место, восстановил/сжал, скопировал обратно (при этом все время исходная база была открыта). Ну и п%здец базе. При закрытии первой же формочки пошли по кругу два сообщения - "Ошибка при операции сохранения" и "Нераспознаваемый формат". Пришлось таскманагером срубать. Восстановить не получилось.

Так что этот вариант не только не рациональный. Это - преступный вариант
В фак его включать нельзя
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32190226
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
> В фак его включать нельзя

В фак его включать надо, но только под лозунгом: если вам кто-то будет предлагать, не ешьте.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32190275
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не пропал я (привет Лоху), а гулял у подножия маленький такой гора Машук (еще раз привет Лоху:) и не съеден еще (привет Санычу), и вообще, у меня отпуск (привет ВСЕМ :) гы-гы... //работайте-работайте, типа...
Но буду съеден, ежли потекший кран дома у лубимой дэвушки не починю, а это вам не базу, знаете ли, восстановить :)

По существу:
1. для EDUDK01:
Знаешь, скорее всего это опять какой-то глюк. Правда, не берусь судить на моей ли машине или на вашей, ибо это без разници - ежли есть глюк (код ведет себя по разному от случая к случаю), то это код стоит упомянуть (см.ниже), но не стоит рекомендовать к повторению. //лично у меня при попытке перезаписать уже сжатый файл на место открытого выдается "Пермишен денаед" (шо-то типа "Разрешение на операцию не получено"). Видимо это пральна, ибо в справке черным по белому написано: "Copies and compacts a closed database , and gives you the..." и все в этом духе. Поэтому в таком виде, во всяком случае в FAQ это не пойдет (см, опять же, ниже).

2. Появилась новая идея добавить в "FAQ: Сжатие БД" раздел "Что еще можно сделать и почему так делать не надо?" , в котором и будут отражены варианты сжатия через "программный клик", "мюнхаузенское сжатие самого себя" и могет быть еще че-нить...

3. Клятвенно клянусь сени-завтра выложить предокончательную версию FAQ на всеобщую оценку, правку (наведение красоты) и т.п. Надеюсь (очень), что он будет окончательным вариантом...
//уехал кран чинить :)
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32190307
EDUDK01
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуфу:

ОК, глюк так глюк. Но мне то от этого не легче, базу однако сжимать надо.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32224157
Moose
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот я тут прочел все ваши сообщения и решил поделиться своим методом.
Я понимаю, что этот метод - кульбиты пьяного дедушки, но раз нельзя выполнять _сжатие_ и _архивирование_ открытой базы и тем более ТЕКУЩЕЙ базы, то, возможно, это единственный метод.

Итак, механизм:
1. из ТЕКУЩЕЙ базы (которую очень хочется и сжать и архивировать) вызывается модуль, который в текущ. (где база лежит) каталоге создает WSH скрипт, запускает его и закрывает базу.
2. запущенный скрипт дожидается, пока Акс закроет базу, и запускает ее сжатие: "msaccess <база>.mdb /compact".
3. потом делается архивация (тоже банальное копирование файлов с помощью объектов WSH)
4. и если все это прошло успешно, снова открывает базу в пользовательском режиме.

Конечно этот механизм имеет много НО, однако с грехом поплам оно работает. 8-)
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32224356
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чё-то я не понял зачем и чё сжимают...

база - это акес в неразделенном виде? в однопользовательном режиме?

или это клиентская часть?

саму себя сжимать-то зачем?

трудно на панель вынести снопку сжать и востановить?

для каких целей сжатие?

для резервного копирования?
дак это в друго топике..

или я чё-то недогоняю.
...
Рейтинг: 0 / 0
Сжатие базы, помогите!!!
    #32224401
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Moose, привет! Что-то подобное мы уже реализовали средствами самого Аксесса, но, имхо, возможностей там побольше можно прикрутить. Смотри FAQ
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сжатие базы, помогите!!!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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