Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.036 c
14-1083323186
Тимохов
2004-04-30 15:06
2004.05.23
Антиспамовая прога.


4-1081421233
Makhanev A.S.
2004-04-08 14:47
2004.05.23
как отличить системное окно от обычного?


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


14-1083825668
infom
2004-05-06 10:41
2004.05.23
Помогите решить задание по МатАнализу


1-1084029702
DDA
2004-05-08 19:21
2004.05.23
PByteArray





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский