Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как из программы изменить путь к БД, прописанный в 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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо