![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как из программы изменить путь к БД, прописанный в BDE? [D6, Access]
PalladinA © (2005-03-03 00:39:00)Не подскажете, как можно решить следующие задачи?
1) Есть программа, одни и теже компоненты доступа к данным которой используют две базы данных идентичной структуры (рабочая и учебная). Можно ли как-то из программы переключать BDE на работу с одной БД на другую?
2) Как узнать из программы путь к БД, прописанный в BDE?
Anatoly Podgoretsky (2005-03-03 09:40:00) [1]Если не брать во внимание [2] то желательно использовать TDatabase и забыть про алиасы к базе. Только виртуальный алиас на TDatabase.
Domix (2005-03-03 09:24:00) [2]я делаю вот так создаю псевдоним если он создан то проверяет изменение параметров
procedure Create_Alias;
var
AParams: TStringList;
Dir: string;
begin
Dir := ExtractFilePath(ParamStr(0)) + 'BASE'; //Путь к базе. В данном случае
//это \Каталог программы\BASE
AParams := TStringList.Create;
if not Session.IsAlias('cssm') then //Проверка существования псевдонима
//cssm
begin
Session.AddStandardAlias('cssm', Dir, 'PARADOX');
end
else
try
begin
AParams.Clear;
AParams.Add('PATH=' + Dir);
Session.ModifyAlias('cssm', AParams);
Session.SaveConfigFile;
end;
finally
AParams.Free;
end;
end;
Anatoly Podgoretsky (2005-03-03 08:59:00) [3]Для акцесс не мешало бы перейти с БДЕ на АДО/Джет
ЮЮ (2005-03-03 04:17:00) [4]завести два алиаса, имя алиаса передавать как параметр, при отсутствии которого брать значение по умолчанию:
procedure TfrmRepDetail.FormCreate(Sender: TObject);
var
ap: TStringList;
begin
if DB.Connected then DB.Connected := false;
if ParamCount > 0 then
DB.AliasName := ParamStr(1)
else
DB.AliasName := 'd2003';
DB.Connected := true;
// нахождение пути к БД
ap := TStringList.Create;
try
DB.Session.GetAliasParams(DB.AliasName, ap);
DBPath := ap.Values['Path'];
if Copy(DBPath, length(DBPath) , 1) <> '\' then
DBPath := DBPath + '\';
finally
ap.Free;
end;
end;