Несколько пользователей имеют доступ к одному и тому же псевдониму BDE, но обращаются к разным каталогам

Предыстория: у меня есть приложение, написанное на Delphi, которое использует Borland Database Engine (BDE), которое просматривает свои данные через псевдоним BDE. Мне удалось запустить его через службы удаленных рабочих столов, где каждый пользователь просматривает данные в одном и том же месте. Что здорово, если все хотят просматривать одни и те же данные. Однако я хочу иметь возможность получить две группы (или более) пользователей, просматривающих разные данные. Я сейчас переписываю приложение, чтобы такая ситуация была возможна, но мне нужна временная мера.

Вопрос:

Есть ли способ, чтобы два приложения смотрели на один и тот же псевдоним BDE, но каталог, на который он ссылается, отличается для каждого приложения?

or

Возможно ли, чтобы два пользователя вошли в систему через RDS (службы удаленных рабочих столов - в Server 2008 или SBS 2008/11), чтобы получить две разные конфигурации BDE? (один пользователь видит псевдоним DATA как c: \ users \ joe \ data, другой - например, как c: \ users \ bob \ data).


person Alister    schedule 02.06.2011    source источник


Ответы (2)


Весь смысл использования псевдонима заключается в возможности установить в ОДНОМ месте для использования ОДНОЙ папки. Смена АЛИАСА меняет папку ВЕЗДЕ.

Если вы не хотите использовать ALIAS, используйте каталог непосредственно в вашем приложении вместо ALIAS, это можно сделать с помощью TDatabase.DatabaseName (если моя память хорошо меня обслуживает - не могу запустить Delphi в данный момент, чтобы проверить это).

person Edelcom    schedule 02.06.2011
comment
Да, я полностью понимаю, что я обхожу весь смысл использования псевдонима, однако переделать приложение (несколько сотен тысяч строк спагетти-кода) требует значительных усилий. Я переписываю приложение, но, вероятно, пройдет 6 месяцев, прежде чем оно станет достаточно функциональным, чтобы заменить существующее приложение. - person Alister; 03.06.2011

Я нашел два решения для этого, оба используют компонент TDatabase. Первое решение: если ваш псевдоним MyAlias, вы можете создать TDatabase перед открытием любых таблиц и установить для AliasName и DatabaseName значение MyAlias. откройте TDatabase и установите для свойства Directory то место, где вы хотите искать данные. Это заменит псевдоним в BDE на локальный, и любые таблицы будут открываться из указанного вами каталога. Это не работает, если вы извлекаете данные из сеанса по умолчанию (например, Session.GetAliasParams).

Второе решение - установить другой псевдоним в BDE (например, MyOtherAlias) и в компоненте TDatabase установить для AliasName значение «MyOtherAlias», а для DatabaseName значение «MyAlias», снова сделайте это, прежде чем открывать какие-либо таблицы / запросы. Кажется, это работает намного лучше и работает с сеансом по умолчанию (если вы вытащите каталог для «MyAlias», он предоставит каталог для «MyOtherAlias»).

Это довольно эзотерически, и я был бы удивлен, если бы кто-то еще нашел его полезным, но именно это делает stackoverflow отличным средством для ответа на непонятные вопросы программирования.

person Alister    schedule 14.06.2011