Телефон: +7 (926) 245-03-63

Получение физического пути к таблице

Следующая статья: Хитрости многопользовательского доступа к базам данных.

Как получить физический путь к таблице?

Если ссылка на таблицу получена через псевдоним, то физический путь к ней выяснить не так просто. Для этого необходимо применить функцию BDE DbiGetDatabaseDesc. Данной функции в качестве параметров передаются имя псевдонима и указатель на структуру DBDesc. Структура DBDesc будет заполнена информацией, относящейся к этому псевдониму. Определение структуры:

pDBDesc=^DBDesc;
// Описание данной базы данных
DBDesc=packed record 
szName: DBINAME;// Логическое имя (или псевдоним)
szText: DBINAME;// Описательный текст
szPhyName: DBIPATH;// Физическое имя/путь
szDbType: DBINAME;// Тип базы данных
end;
// Физическое имя/путь будет содержаться в поле szPhyName структуры DBDesc.

Возможные значения, возвращаемые функцией DBIGetDatbaseDesc:
DBIERR_NONE – описание базы данных для pszName было успешно извлечено. DBIERR_OBJNOTFOUND – база данных, указанная в pszName, не была обнаружена. Приведенный ниже пример кода демонстрирует получение физического пути для компонента TTable, использующего псевдоним DBdemos:

var vDBDesc: DBDesc; 
DirTable: String; 
begin 
  Check(DbiGetDatabaseDesc(PChar(Table1.DatabaseName), @vDBDesc)); 
  DirTable:=Format('%s\%s', [vDBDesc.szPhyName, Table1.TableName]); 
  ShowMessage(DirTable);
end;