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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.05.2013, 12:47   #1
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию Путь к БД

Всем привет. Значит проблема простая. Есть приложение, есть БД. надо сделать так, чтобы путь к БД был относительным, т.е. программа запускалась на любом компьютере. Предполагается, что БД лежит в папке с exe файлом.
Я использовал вот такой код, путь к БД прописывался правильной, но видимо только при компиляции. Если скомпилированную программу перенести в другую папку - путь к БД не найден.

Код:
DataModule2.IBDatabase1.DatabaseName:=ExtractFilePath(ParamStr(0))+'BD.FDB';
P.S. Delphi XE
Tanzor69 вне форума Ответить с цитированием
Старый 18.05.2013, 13:49   #2
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

http://www.ibase.ru/devinfo/ibx.htm
eval вне форума Ответить с цитированием
Старый 18.05.2013, 14:32   #3
Yurk@
Участник клуба
 
Аватар для Yurk@
 
Регистрация: 19.12.2007
Сообщений: 1,100
По умолчанию

Код:
DataModule2.IBDatabase1.DatabaseName:='BD.FDB';
На форуме: Помогаю за спасибо
ICQ\Skype: Это моё личное время ...
Yurk@ вне форума Ответить с цитированием
Старый 19.05.2013, 11:35   #4
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

спасибо конечно за ответы, но еще раз повторюсь. Надо чтобы путь к базе данных был относительным. В итоге должна быть папка с программой где лежит exe и файл БД. И куда бы эту папку не переместили - программа бы запускалась. В Delphi 7 работала вот такая конструкция
Код:
DataModule2.IBDatabase1.DatabaseName:='.\BD.FDB';
но тут не работает
Tanzor69 вне форума Ответить с цитированием
Старый 19.05.2013, 11:45   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

По ссылке, что eval дал
Код:
IBDatabase1.DatabaseName:='servername:c:\dir\data.gdb';
ну и попробуйте
Код:
DataModule2.IBDatabase1.DatabaseName:='servername:'+ExtractFilePath(ParamStr(0))+'BD.FDB';
Или ссылки из принципа не смотрите?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.05.2013, 11:49   #6
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

хотя сейчас начинаю думать, что проблема в другом. вообщем путь прописан в Source Code:
Код:
...
Application.CreateForm(TForm_main_report, Form_main_report);
  DataModule2.IBDatabase1.DatabaseName:=ExtractFilePath(Application.ExeName)+'BD.FDB';
  DataModule2.IBDatabase1.Connected:=True;
  DataModule2.IBTransaction1.Active:=True;
...
если готовый exe файл запускать в папке где и идет разработка - всё нормально запускается
Если папку с exe и БД перенести в любое другое место - появляется ошибка, причем в ошибке какая то ерунда написана, что БД уже открыта и т.д. Хотя на самом деле, как мне кажется, просто не тот путь.

Скрин ошибки ниже
Изображения
Тип файла: jpg 1.jpg (24.0 Кб, 97 просмотров)
Tanzor69 вне форума Ответить с цитированием
Старый 19.05.2013, 11:51   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А в Connected случайно True изначально не установлен?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.05.2013, 12:15   #8
Tanzor69
Пользователь
 
Регистрация: 05.11.2011
Сообщений: 90
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А в Connected случайно True изначально не установлен?
офигеть. именно. даже не думал, что если уже стоит там тру, то нельзя еще программно это указывать.
всё, спасибо, вопрос решен
Tanzor69 вне форума Ответить с цитированием
Старый 19.05.2013, 12:27   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Tanzor69 Посмотреть сообщение
офигеть. именно. даже не думал, что если уже стоит там тру, то нельзя еще программно это указывать.
всё, спасибо, вопрос решен
Можно. Но сначала в False. А вообще это студенческий г-код - оставлять TRUE, соединение должно программно устанавливаться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Абсолютный путь. Относительный путь. Запутался. Mr_freeman Общие вопросы Web 11 22.03.2013 16:04
Путь к иконке ExtractIcon(0, "путь", 0); Alex1991 Помощь студентам 2 04.02.2012 23:48
Путь к БД stscolt БД в Delphi 4 11.02.2010 17:15
Путь к файлу artemavd Общие вопросы Delphi 12 24.03.2009 14:09
Путь StartMis Общие вопросы Delphi 3 03.10.2008 14:45