Вопрос № 112468: доброго времени суток, уважаемые эксперты!
1. подскажите, пожалуйста, выход: есть программа, написанная на foxpro6 (сам проект), отчет выдется в Excel. как быть, если на компьютере нет excel, а только openofficce??
2. можно ли в Access програ...
Вопрос № 112.468
доброго времени суток, уважаемые эксперты!
1. подскажите, пожалуйста, выход: есть программа, написанная на foxpro6 (сам проект), отчет выдется в Excel. как быть, если на компьютере нет excel, а только openofficce??
2. можно ли в Access программно сделать переиндексацию БД?
большое спасибо!!!
Отправлен: 05.12.2007, 16:55
Вопрос задала: Fl_irchik (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 5)
Отвечает: Титов Михаил Анатольевич
Здравствуйте, Fl_irchik!
1. Почти наверняка Excel прийдется установить, иначе отчеты в Excel выводится не будут. Это связано с тем, что для формирования файла c отчетом в программе скорее всего используется самый распространенный способ - создать объект Excel.Application и т.д.
2. В Access нет метода вроде mytable.indexes(1).rebuild. Переиндексация в Access есть суть удаление индекса и создание нового. Программное создание индекса дело довольно хлопотное:
1) создать объект myIndex типа Index и установить все его свойства
2) методом CurrentDb.TableDefs("myTableName").Indexes.Append myIndex
А в случае "переиндексации" Вам надо будет скопировать в новые объекты индексов свойства старых! Если речь идет об одной таблице и паре быстрорастущих индексов к ней - то это оправдано и несловжно. Но если ставить задачу полной переиндексации всех таблиц, то это уже довольно сложная процедура.
В действительности необходимость полной ручной "переиндексации" в Access по меньшей мере неоднозначна. Все необходимые операции обслуживания (в том числе и реорганизация индексов) выполняются при сжатии базы данных. Программно сжатие может быть выполнено методом DBEngine.CompactDatabase. Только надо оговориться сразу - невозможно сжать базу из кода в ней самой же! Сжимать можно только закрытую базу. Во время сжатия фактически происходит создание новой сжатой копии базы данных.
Ответ отправил: Титов Михаил Анатольевич (статус: 4-ый класс)
Ответ отправлен: 07.12.2007, 04:39 Оценка за ответ: 5 Комментарий оценки: большое спасибо! действительно используется объект Excel.Application. а не подскажете ли тогда, как ПЕРЕПИСАТЬ на openoffice?