![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как программно указать путь доступа к БД? [D6, Paradox]
Nikos © (2003-05-03 13:47:00)Я создал псевдоним для БД. Указал путь доступа к БД. В ходе работы программы мне необходимо изменить путь, а вернее переключится на другую БД, то есть путь доступа должен измениться. Возможно ли это сделать, ведь БД уже другая?
А суть программы такова. Пользователь из списка выбирает БД, которая ему необходима, при чем количество БД может меняться. После работы с БД, пользователь захочет поработать с другой БД и так далее. При этом разные БД будут находиться по разным путям (пути мне известны). Возможно ли создать один псевдоним, а менять только пути для доступа к этим БД или для каждой нужно создавать собственные псевдонимы? Если придется создавать новый, то подскажите как это можно сделать программным путем?
MsGuns (2003-05-04 12:34:00) [1]Беда многих начинающих, что они путают понятие "база данных" и "таблица БД". Если у тебя твоя "БД" состоит из единственной таблицы, то путь к файлу этой таблицы (.db) указываешь в TableName. Если надо юзать три таблицы в разных каталогах за раз, кладешь 3 TTable и св-вах TableName каждого указываешь пути.
Если таблицы используются попеременно, то каждый раз перед сменой пути закрываешь текущую таблицу, изменяешь путь в св-ве TableName, после чего опять открывешь и работаешь, как и прежде.
Да, кстати, структуры, индексы всех "переключаемых" таблиц должны быть идентичны, если отображаются они все в одном и том же гриде. В противном случае надо перед открытием таблицы чистить коллекцию колонок грида. (RebuildColumns)
Если же БД состоит более, чем из одной таблицы (в большинстве случаев, т.к. любой справочник - уже есть доп.таблица), то все они должны быть в одном каталоге и лучше для ЦЕНТРАЛИЗОВАННОГО доступа к ним юзать компонент TDataBase. Если таких баз несколько экземпляров в разных папках или даже компах, тогда рекомендуется динамически в программе создавать алиас, его настраивать на нужную папку (путь можно брать, к примеру, из ini-файла или дать вводить продвинутому юзеру), а затем к этому алиасу ссылаться из своей TDataBase.
Для динамич.работы с алиасами в BDE используется TSession
Nikos (2003-05-04 12:08:00) [2]А если у меня есть полный путь, то есть
1 База Данных находится по пути C:\Temp\Base1.db
2 База Данных находится по пути C:\Folder\Base2.db
3 База Данных находится по пути D:\Base3.db
Куда мне вписывать эти пути, чтобы программа смогла обратится к этим БД.
sniknik (2003-05-03 22:50:00) [3]Nikos (03.05.03 22:31)
> Anatoly Podgoretsky ©а где находится ваш сайт? Не могли бы дать ссылку?
а см. прямо в "точку копирайта". ;о)
Nikos (2003-05-03 22:31:00) [4]Anatoly Podgoretsky © а где находится ваш сайт? Не могли бы дать ссылку?
mukha (2003-05-03 20:51:00) [5]Примерно так:
Screen.Cursor:=crHourGlass;
Table1.Close;
Table1.DatabaseName:="Base";
Table1.TableName:="MyBase.db";
Table1.Open;
Screen.Cursor:=crDefault;
Anatoly Podgoretsky (2003-05-03 19:01:00) [6]Скачай с моего сайта любую программу работы с базами, там сделано именно так, модернизируешь под свои нужды.
Nikos (2003-05-03 18:34:00) [7]Не могли бы вы объяснить по подробнее. Как настроить Params и в каком именно свойстве объекта TDatabase задать путь к БД?
Anatoly Podgoretsky (2003-05-03 16:39:00) [8]Мною предложенный путь позволяет использовать оба варианта, и тем более что все остальные компоненты будут пользоваться логическим псевдонимом из TDatabase, не привязываясь к конкретной базе.
MsGuns (2003-05-03 16:25:00) [9]Для настроек алиасов на конкретные папки используй TSession или вообще откажись от алиасов и работай как сказал Anatoly Podgoretsky © (03.05.03 13:54), т.е. в св-ве этого объекта перед открытием БД указывай нужный путь (и не забудь для первого обращения настроить Params)
Anatoly Podgoretsky (2003-05-03 13:54:00) [10]Используй TDatabase