Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.11.2011, 15:08   #1
Elegance3
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 30
По умолчанию ADOConnection: как обеспечить работу подключаемой БД на другом компьютере ?

В программе, работающей с БД, использую компонент ADOConnection. В поле ConnectionString прописывается путь к БД. Сам файл БД находится в той же папке, что и проект. Но при открытии программы на другом компьютере возникают проблемы с указанием пути к БД. И соответственно программа не работает. Подскажите, как обойти эту проблему ??
Elegance3 вне форума Ответить с цитированием
Старый 26.11.2011, 15:23   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сама база тоже на другой комп копируется? Тогда используйте ExtractFilePath(Application.ExeName ) для настройки ConnectionString
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.11.2011, 15:25   #3
Elegance3
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 30
По умолчанию

да, копируется на комп вся папка с проектом и с БД соответственно.
А можно подробнее куда вписать эту функцию ??
Elegance3 вне форума Ответить с цитированием
Старый 26.11.2011, 15:34   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Я же не знаю какя у вас строка соединения. В ConnectionString что-то же записано. В то место где путь прописан ваш вставляйте. Обычно это параметр Data Source. Вот примерчик набросал, но у вас строка соединения другая скорее всего

Код:
const cConString = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False';
...
ADOConnection1.ConnectionString:=Format(cConString,[ExtractFilePath(Application.ExeName)]);
...
ADD

Это нужно сделать перед соединением с СУБД
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 26.11.2011 в 15:38.
Аватар вне форума Ответить с цитированием
Старый 26.11.2011, 15:40   #5
Elegance3
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 30
По умолчанию

вот это моя строка в ConnectionString:
Цитата:
Provider=Microsoft.Jet.OLEDB.4.0;Us er ID=Admin;Data Source=C:\D&S\Anastasia\Рабочий стол\Телефонная книга (ргз сапкис)___beta 1.0.0.1\контакты.mdb;Mode=Share Deny None;Extended Properties="";Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=5;Jet OLEDB:Database Locking Mode=1;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
то есть я могу прописать вашу строку в DataModule ?
потому что как я понимаю обращение к БД происходит во время запуска программы

Последний раз редактировалось Elegance3; 26.11.2011 в 15:42.
Elegance3 вне форума Ответить с цитированием
Старый 26.11.2011, 15:48   #6
Elegance3
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 30
По умолчанию

Вписала Вашу функцию в процедуру создания основной формы - выдает ошибку((
Elegance3 вне форума Ответить с цитированием
Старый 26.11.2011, 15:54   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

У вас не путь прописуется, а полное имя файла базы данных. Т.е. вместо ExtractFilePath(Application.ExeName ) нужно испльзовать ExtractFilePath(Application.ExeName )+'контакты.mdb'. Еще раз повторяю, это нужно делать до соединения с СУБД. Т.е. сначала правим ConnectionString, а только после этого делаем ADOConnection1.Connected:=True. В проекте свойство ADOConnection1.Connected должно быть False
Цитата:
то есть я могу прописать вашу строку
Вы должны прописать свою строку
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.11.2011, 16:09   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну и ещё добавлю, если поискать по форуму по ключевому слову ADOConnection,
то найдётся множество тем, посвящённых тому, как формировать строку коннекта в RunTime...

да и внизу "Похожие темы" все подходят, туда тоже можно сходить...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.11.2011, 21:20   #9
Elegance3
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 30
По умолчанию

сделала всё, выдает ошибку типа "Acces violation at adress 004C2211"
Elegance3 вне форума Ответить с цитированием
Старый 27.11.2011, 01:35   #10
Elegance3
Пользователь
 
Регистрация: 12.10.2011
Сообщений: 30
По умолчанию

Спасибо))) вышла из положения))))
Elegance3 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает программа на другом компьютере MooNDeaR Помощь студентам 6 04.08.2011 19:23
запуск на другом компьютере kaljan775 Общие вопросы C/C++ 3 07.12.2010 15:40
Запуск приложения на другом компьютере. VHomer БД в Delphi 6 29.09.2010 08:18
Как запустить Delphi2010-программу(exe-шник) на другом компьютере belartvlad29 БД в Delphi 4 13.07.2010 13:01
Как чтобы программа работала на другом компьютере Olaf C++ Builder 2 08.04.2010 12:09