Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Каталог базы данных.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.062 c
9-1071948524
G A M E R
2003-12-20 22:28
2004.05.23
Оцените новую версию МЯСОПОВАЛА


1-1084255430
Elast
2004-05-11 10:03
2004.05.23
запуск программы


3-1083072776
Slon_SCG
2004-04-27 17:32
2004.05.23
Автоматическое восстановление БД InterBase после сбоя


14-1083408960
hedgehoge
2004-05-01 14:56
2004.05.23
Распознавание человека


11-1070879017
ecm
2003-12-08 13:23
2004.05.23
XP-Манифест и тулбар: как побороть?