Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
ВнизКаталог базы данных. Найти похожие ветки
← →
Mishenka (2004-04-14 20:55) [0]При переносе проги на другой комп, или в другой каталог выводится сообщение об ошибке, Тобишь база строго прописана по определённому пути. Как сделать, чтоб путь менялся взависимости от расположения проги?
← →
Fay © (2004-04-14 21:00) [1]Относительный или настраиваемый путь
← →
Mishenka (2004-04-14 21:02) [2]А можно поподробней, где этот путь указывается?
← →
Fay © (2004-04-14 21:04) [3]А можно поподробней, прописана - это как?
← →
Mishenka (2004-04-14 21:55) [4]Ну при запуске проги выводит сообщение Exception EDBEngineError
и сообщение Path not Found и путстарый путь по которому она раньше была.
← →
Fay © (2004-04-14 22:05) [5]А где путь старый (который не найден и "по которому она раньше была") прописан?! Не с потолка ведь.
← →
Mishenka (2004-04-14 22:49) [6]Ну вроде если открыть SQL Explorer и там посмотреть на базу и свойства, то в свойстве Path как раз тот каталог... Видимо надо написать туда что-то другое. Только что?
← →
Fay © (2004-04-14 23:58) [7]Правильный путь
← →
ЮЮ © (2004-04-15 02:49) [8]Создавать ALIAS не в SQL Explorer или BDE Администраторе, а динамически, указывая в качестве Path нужный путь
← →
Mishenka (2004-04-15 03:18) [9]А как его указать?
← →
ЮЮ © (2004-04-15 04:02) [10]Ну например, так:
В нашем приложении есть компонент DataBase1, у которого DataBaseName = "MySuperPuperBase". Для работы приложения нужен ALIAS "MySuperPuperBase", который бы указывал на папку BD в той же директории, что и приложение.
На родном компьютере все настроено. А на чужом такого алиса даже нет. Что делать? Можно выполнить такой код:
procedure TForm1.FormCreate(Sender: TObject);
begin
try
Database1.Connected := true;
except
Check(DbiDeleteAlias(nil, PChar(Database1.DatabaseName)));
DbiAddAlias(
nil,
PChar(Database1.DatabaseName),
nil,
PChar("PATH:" + ExtractFilePath(ParamStr(0)) + "BD"),
true
);
end;
end;
И при запуске этот алиас будет создан.
← →
ЮЮ © (2004-04-15 04:09) [11]uses BDE, естественно.
← →
Mishenka (2004-04-15 19:28) [12]Чё-то так тоже не работает :((. Опять таже ошибка...
← →
Mishenka (2004-04-15 21:09) [13]RjhКороче бка возникает при обращении к DataModule1...
← →
Fay © (2004-04-15 21:37) [14]Прямо не верится. Ужас какой.
← →
ser_ega (2004-04-15 22:27) [15]>>Fay А этот код для какой базы? Для Paradox он подойдет или нет? Если нет то как сделать для Paradox?
← →
Fay © (2004-04-16 00:33) [16]Видимо, этот вопрос предназначался ЮЮ... А мой ответ - ,да,.
← →
Mishenka (2004-04-16 14:33) [17]Так чё делать-то?
← →
Mishenka (2004-04-16 21:29) [18]Может хоть кто-нибудь знает?
← →
Sairex (2004-04-17 15:14) [19]Есть два варианта решения этой проблемы:
1. Создаешь файл который содержит информацию о местонахождении файла (причем без разницы какой он там db или еще какой нибудь)
и При запуске проги читаешь путь где находиться база. Но есть
свои не достатки.
2. Определять путь при запуске программы. Есть различные способы
как узнать путь до твоего приложения: я же чаще делаю так
..............
Var FilePath1,S1:String;
...
Begin
....
FilePath1:=Application.ExeName; // Выводит полный путь и имя
//exe-файла
For i:=1 to Length(FIlePath1)-6 Do
S1:=S1+FilePath1[i];
....
End;
Этот код можно использовать при полной уверенности что файл не переименуют поскольку здесь отбрасывается имя exe-из 6 символов
(p1.exe). По идее можно усовершенствовать.
← →
Anatoly Podgoretsky © (2004-04-17 15:31) [20]Плясать надо от следующего
1. База отвязана от программы, находится в любом месте
2. База жестко связана с программой, находится в той же папке
3. База жестко связана с программой, находится в папке пользователя
Отсюда и разные решения.
Первый вариант дает большую гибкость.
Второй вариант можно и должно нарваться на отсутствие прав
Третий вариант однопользовательский
← →
Mishenka (2004-04-17 15:41) [21]
> Sairex (17.04.04 15:14) [19]
Проблема не в том как определить путь к проге, я его уже 10 раз определил. Проблема в том куда этот путь потом запихнуть, чтоб база его знала.
> Anatoly Podgoretsky © (17.04.04 15:31) [20]
У меня вариант 2, тобишь база находится в папке проги в одном из подкаталогов.
← →
Anatoly Podgoretsky © (2004-04-17 15:55) [22]Значит отказ от алиасов и устанавливать путь до базы при старте программы. Если интересно как это делается, то сходи на мой сайт и возьми любуэ программ по работе с базами, они все в исходных текстах.
← →
Mishenka (2004-04-17 21:09) [23]Чё-то я посмотрел, SCB у меня сама выдаёт ошибку unknown DataBase, а у остальных на сайте написано, что надо в alias"е путь указывать, тобишь они для этого не подходят...
← →
Черный прапорщик (2004-04-17 22:37) [24]Novel и Win98?
← →
Sairex (2004-04-18 16:12) [25]Хммм... Как же ты тогда открываешь базу? И какого она типа ?
Если BDE то могу подсказать, иначе врдяли
← →
Mishenka (2004-04-18 19:34) [26]Открываю через DataModule. Ну создавал базу конечно в BDE/ Так что подсказывай :))
← →
Mishenka (2004-04-19 17:21) [27]Почему все молчат?
← →
Hawk2 © (2004-04-19 18:34) [28]Самый примитивный способ :)
procedure TMainFrm.FormShow(Sender: TObject);
var Str:string;
begin
GetDir(0,Str);
Str:=Str+"\DataFiles\";
DataModule1.Query1.DatabaseName:=Str;
end;
база должна находиться например в подкаталоге DataFiles, в том же каталоге что и файл программы, а вот сама программа к конкретному пути не привязана.
← →
Mishenka (2004-04-19 19:49) [29]
> Hawk2 © (19.04.04 18:34) [28]
Так тоже не работает :(((
Уж незнаю что и делать, наверно скоро повешусь.
← →
HSolo © (2004-04-20 09:15) [30]Ну вот Вам еще пример(из работающей программы):
with MyDB do begin
Params.Clear;
Params.Add("DefaultDriver=DBASE");
Params.Add("EnableBCD=false");
Params.Add("Path="+fDBPath);
end;
где:
MyDB - TDataBase
fDBPath - путь к каталогу, где база лежит
Это для dBase, для Paradox - поставьте нужные параметры (какие именно - настройте алиас в BDEAdmin и посмотрите)
← →
Mishenka (2004-05-02 04:55) [31]Ну наконец-то разобрался! Не прошло и года! Спасибо всем за помощь!
← →
имя (2004-05-02 11:46) [32]Удалено модератором
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.05.23;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.04 c