Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

База Access. Что нужно для работы с ней ? [D5]


UnDISCOvery ©   (2002-07-05 14:36:00) 

Такая ситуация: Пользователь установил Винду, установил мои прогу, в дистрибутиве проги зашита БД Access с данными в виде 4 таблиц. Что мне необходимо сделать чтобы мои прога корректно сомгла работать с БД. Общение с ней планируется вести через ADO, я так понимаю тогда BDE не нужно устанавливать, а что нужно ? нужно ли установить на комп Access ? ну и с благоарностью выслушаю любые ваши мысли ... :)


nick_sniper   (2002-07-15 00:23:00) [1]

Я использую следующий код (не могу гарантировать 100% правильность - но работает, кстати для NT-шных компов если пользователь не имеет прав админа - возможны глюки - там реестр нужно читать в режиме ReadOnly, но мне в падло исправить. Если исправишь - кинь, pls, код):

var
Reg: TRegistry;
isInst : boolean;
begin
IsInst := false;
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CLASSES_ROOT;
if Reg.OpenKey("\CLSID\{00000100-0000-0010-8000-00AA006D2EA4}\InprocServer32", false) then
if FileExists(Reg.ReadString("")) then
IsInst := true;
finally
Reg.CloseKey;
Reg.Free;
end;
if not isInst then // Регистрация
FileExecuteWait(GetSystemDir+"\regsvr32","DAO360.DLL /S",AppPath,esNormal);


А, кстати, здесь используются некоторые функции из RxLib, так что, возможно, надо будет их вручную добавить в USES


UnDISCOvery   (2002-07-08 10:43:00) [2]

Большой сэнкс ! :)
Исходя из вышесказанного, делаю выводы...
1. Включаем в дистрибутив библитеку DAO360.dll
2. При инсталяции смотрим зарегестрирован ли он ? и если нет, то регестрим его.
3. Запускаем прогу и все ОК.

Вопрос: как определить зарегестрирован ли он ?


nick_sniper   (2002-07-06 16:14:00) [3]

Вот что сказано у мелкософта:

Create a directory with the name DAO under C:\Program Files\Common Files\Microsoft Shared and copy Dao360.dll to this directory. In addition, Dao360.dll must be registered as a COM DLL. This can be accomplished by using the Regsvr32.EXE utility.

Ставить лучше всего DAO 3.6 (от ACCESS 2000) - он имеет более продвинутые возможности и поменьше глюков, плюс инсталляция на порядок проще. Поэтому 3.5 даже описывать не буду.

1. Вместе со своей прогой нужно поставлять файл Dao360.dll (который лежит в C:\Program Files\Common Files\Microsoft Shared)
2. Копируешь свою прогу на винт юзера и в ту же папку копируешь Dao360.dll
3. Регистрируешь его выполняя команду типа такой:
%windir%\system\regsvr32 DAO360.DLL /S
4. Все - DAO готов к работе.

Учти один ньюанс - если у юзера стоит ACCESS 2000 то регистрировать свой файлик не надо! А то после удаления твоей проги у юзвера ацесс может перестать работать


Digitman   (2002-07-05 18:48:00) [4]

нужен дистрибутив библиотеки DAO (MS Data Access Object). Версия зависит от версии ADO. Думаю, что не меньше чем DAO v3.5.

Результатом корректной инсталляции DAO должен стать зарегистрированный в реестре InProc-сервер с именем фабрики DAO.DBEngine, каковой собственно и осуществляет доступ к MDB-базам (и не только к ним - через ISAM-драйверы DAO обращается к присоединенным таблицам, например, DBF-формата)


Дмитрий Калугин   (2002-07-05 17:07:00) [5]

Наши мысли: незнаю насчет АДО. А почему бы не классический БДЕ??
Может алиас к БД надо менять или динамически это делать.
Частая ошибка, кстати, когда прога в дистрибутиве настроена
на "старый" путь к БД: тот что у разработчика.
Акцесс конечно же не нужен.


Наверх

Титульная страница Поиск, карта сайта Написать письмо