Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Delphi: Базы данных и репортинг > Создание инсталлятора |
Автор: mulla 18.5.2006, 21:33 | ||
Товарищи, пожалуйста, выручите! Создал я БД Delphi 7 + Access 2003 через ADO. Теперь мне надо (просто в обяз) перекинуть на её на комп преподам. Но если я просто exe-к кину, то на их компе появиться сообщение, что не найдена таблица (просто нет связи с прикреплёнными таблицами). Для этого я решил создать Инсталлятор, используя Borland InstallShield Express. Все сделал по инструкции:
Для проверки я перенёс папку с проектом на другой комп и установил программу, запустив setup.exe. Программа установилась нормально, НО опять не найдена таблица! Товарищи, подскажите, может я неправильно создал инсталлятор или не те объекты пометил (п.4 и (или) п.5)? |
Автор: Sqlninja 18.5.2006, 21:50 |
А как ADO коннектится к Access? не через ODBC случайно? тогда источник данных (Datasource) надо включить в инсталлятор. |
Автор: mulla 18.5.2006, 22:28 |
Выберите подключаемые данные: Поставщики OLE DB: MS jet 4.0 OLE DB Provider |
Автор: Sqlninja 18.5.2006, 22:57 |
В общем, Вам нужно сделать так, чтобы пути к базе были относительными, а не абсолютными. Я вижу 2 варианта решения: 1) Создайте для коннекта переносимый источник данных типа ODBC и переносите его инсталлером. 2) Поместите файлы BD.exe и OBdan.mdb в одну директорию, и выполняйте коннект программно, где путь к базе укажете через ExtractFilePath(Application.ExeName). |
Автор: mulla 18.5.2006, 23:22 | ||
Большое спасибо за ответы!
Можно пожалуйста уточнить как програмно? |
Автор: Palladin 18.5.2006, 23:33 |
Скорее всего у тебя в конектах Аdotable,adoconnection,datasourse указаны полные пути к БД, при переносе на другой камп прога там их и ищет, а поскольку там их нет вот тебе и ошибка, вообщем в конектах стирай всё лишнее, оставляй допустим если прога лежит в папке КУРСАЧ то в конектах прописывай вместо полного пути(только не удаляй ничего другого, там длинная строка с различными параметрами конекта, тебе же нужно изменить лиш путь, найди и измени) ссылку к БД так: КУРСАЧ\ИМЯ БД.расширение тогда прога при запуске будет искать БД в папке с екзешником |
Автор: Sqlninja 18.5.2006, 23:40 |
У меня сейчас нет установленного Delphi на компьютере. Поищите в свойствах и методах TADOConnection. В хелпе все написано. |
Автор: froloff3 29.5.2006, 08:13 |
Для работы с использованием ADO на другой машине необходимо формировать свойство CnnectionString на в режиме проектирования приложения, а программно. Для это необходимо воспользоваться компонентом OpenDialog. Для этого сперва посмотри как формируется свойство CnnectionString на этапе проектирования, а далее с использованием компонента OpenDialog получаешь доступ к любой базе данных. Программное формирование CnnectionString (см. как эта строка формируеться на этапе проектирования, фактически необходимо заменить ее кусок с указанием нового пути): - необходимо взять кусок строки перед полным путем к БД - получить строку к БД при помощи компонента OpenDialog - необходимо взять кусок строки после этого пути Весь этот код записывается в обработчик события формы (например FormCreate).Листинг прграммы увеличиться строк на 50, но зато программа будет работать на любой машине. Для того чтобы программа не требовала при каждом запуске указывать путь воспользуйся файлом с расширением INI (переменная TIniFile хелп по этой переменной в Delpi есть) Это в общих чертах. Все остальное смотри в книге: Аю Федоров, Н. Елманова ADO в Delphi БХВ-Петербург 2002 г. |