Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 716

/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
Можно ли задать псевдоним базы данных и изменить ее расположение на диске во время выполнения программы, а не через BDE administrator? Если да то как? Спасибо!

Евгений Eklmn Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Евгений Eklmn (статус: Посетитель)
Вопрос отправлен: 9 июля 2007, 20:49
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Градов Ю.М.

Здравствуйте, Трофимов Евгений!
Посмотрите код в приложении, может поможет

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3. MyList: TStringList;
  4. begin
  5. MyList := TStringList.Create;
  6. try
  7. with MyList do
  8. begin
  9. Add('SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB');
  10. Add('USER NAME=MYNAME');
  11. end;
  12. Session1.AddAlias('NewIBAlias', 'INTRBASE', MyList);
  13. finally
  14. MyList.Free;
  15. end;
  16. end;
  17.  
  18.  


Ответ отправил: Градов Ю.М. (статус: 8-ой класс)
Время отправки: 9 июля 2007, 20:58
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 11 июля 2007, 21:45; участников в обсуждении: 2.
Евгений Eklmn

Евгений Eklmn (статус: Посетитель), 10 июля 2007, 11:05 [#1]:

Как сопоставить таблицу с бд? Спасибо!
Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория)
Градов Ю.М.

Градов Ю.М. (статус: 8-ой класс), 11 июля 2007, 21:42 [#2]:

Используйте Session.GetAliasParams. В ответ вы получите объект TStrings, откуда вы можете получить значение для переменной 'PATH'. Для получения дополнительной информации обратитесь к электронной справке к разделу, описывающему TSession. Объект Session объявлен в модуле DB.



uses db;

var
aliaspath: string[128];
begin
aliaspath := Session.GetAliasParams['MyAlias'].values['PATH'];
end;





uses SysUtils,DbiProcs, DBiTypes;
...

function GetDataBaseDir(const Alias : string): String;
(* Возвращает каталог базы данных, на которую
ссылается псевдним (без конечного обратного слеша) *)
var
sp: PChar;
Res: pDBDesc;
begin
try
New(Res);
sp := StrAlloc(length(Alias)+1);
StrPCopy(sp,Alias);
if DbiGetDatabaseDesc(sp,Res) = 0 then
Result := StrPas(Res^.szPhyName)
else
Result := '';
finally
StrDispose(sp);
Dispose(Res);
end;
end;
Градов Ю.М.

Градов Ю.М. (статус: 8-ой класс), 11 июля 2007, 21:45 [#3]:

function GetPathNameByAlias(sAlias: string): string;
var
Database: TDatabase;
pszDir: PChar;
begin
Database := TDatabase.Create(nil); {allocate memory}
pszDir := StrAlloc(255);
try
Database.AliasName := sAlias;
Database.DatabaseName := 'TEMP';
Database.Connected := True;
DbiGetDirectory(Database.Handle, True, pszDir);
Database.Connected := False;
Result := StrPas(pszDir);
finally
Database.Free;
end;
end;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:25
Выполнено за 0.03 сек.