Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 14.03.2014, 12:58
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию Подключение БД MS Access

БД подключаю с помощью инструмента ADOConnection. На локальном компютере все работает, но когда переношу на другой комп. - говорит, что не видит БД (оно и не удивительно, так как идет жорсткая привязка к пути БД).

БД и exe-файл находятся в одной папке.

Вопрос: как правильно подключить БД через ADOConnection так, чтобы программу можно было переносить на другие компюторы?
Ответить с цитированием
  #2  
Старый 14.03.2014, 13:19
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вот пример
Ответить с цитированием
Этот пользователь сказал Спасибо Alegun за это полезное сообщение:
vah-smile (14.03.2014)
  #3  
Старый 14.03.2014, 14:30
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию

Цитата:
Сообщение от Alegun
Вот пример

Пример - работает, но вот только не могу его подключить к своей программе:
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin

  ADOConnection1.ConnectionString:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=' +
  ExtractFileDir(ParamSTR(0)) + '\database.mdb;' +
  'Mode=ReadWrite;Persist Security Info=False';
  ADOConnection1.DefaultDatabase:='database.mdb'
end;

При запуске программы выдает ошибку:
Ответить с цитированием
  #4  
Старый 14.03.2014, 14:36
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию

Цитата:
Сообщение от vah-smile

При запуске программы выдает ошибку:

Сменил "Mode=ReadWrite;" на "Mode=cmReadWrite;"

Получил следующую ошибку:
Ответить с цитированием
  #5  
Старый 14.03.2014, 14:44
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Не мучайтесь, нажмите в обжект инспекторе на свойстве таблицы ConnectionString, соберите строку с помощью мастера, а затем просто замените в получившейся строке фиксированный патч до базы на ExtractFileDir(ParamSTR(0)) + "\database.mdb", прям по образцу (можно проверить потом успешное подключение), его и используйте в сборке
Ответить с цитированием
  #6  
Старый 14.03.2014, 16:56
Аватар для vah-smile
vah-smile vah-smile вне форума
Новичок
 
Регистрация: 16.02.2009
Адрес: Украина
Сообщения: 67
Репутация: -53
По умолчанию

Цитата:
Сообщение от Alegun
Не мучайтесь, нажмите в обжект инспекторе на свойстве таблицы ConnectionString, соберите строку с помощью мастера, а затем просто замените в получившейся строке фиксированный патч до базы на ExtractFileDir(ParamSTR(0)) + "\database.mdb", прям по образцу (можно проверить потом успешное подключение), его и используйте в сборке

Да так и делаю (сформировал строку с помощью мастера и вбил в код TForm1.FormCreate).
Код:
prog_dir:=ExtractFileDir(ParamStr(0))+'\';

  ADOConnection1.ConnectionString:='Provider=MSDASQL.1;'+
                                   'Persist Security Info=False;'+
                                   'User ID=admin;'+
                                   'Mode=ReadWrite;'+
                                   'Extended Properties="DSN=MS Access Database;'+
                                   'DBQ='+prog_dir+'database.mdb;'+
                                   'DefaultDir='+ prog_dir +
                                   'DriverId=25;'+
                                   'FIL=MS Access;'+
                                   'MaxBufferSize=2048;'+
                                   'PageTimeout=5;'+
                                   'UID=admin;';
  ADOConnection1.DefaultDatabase:= prog_dir+'database.mdb;'

При запуске получаю ошибку:

Меня еще что смущает в коде так это параметр UID=admin (без пароля). Можно ли здесь обойтись логином и паролем к БД?
Ответить с цитированием
  #7  
Старый 14.03.2014, 20:08
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от vah-smile
Да так и делаю (сформировал строку с помощью мастера и вбил в код TForm1.FormCreate)...
Здесь прогерства нет вообще - в мастере на вкладке "Соединение" необходимо проверить результат нажав на кнопку "Проверить соединение": если подключение произойдет без ошибок, тогда и в сборке это будет прекрасно работать
Ответить с цитированием
  #8  
Старый 14.03.2014, 23:31
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Вас вот эта строчка не смущает? Меня смущает...
Код:
Extended Properties="DSN=MS Access Database;
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 14:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter