Следующая статья: Хитрости многопользовательского доступа к базам данных.
Как получить физический путь к таблице?
Если ссылка на таблицу получена через псевдоним, то физический путь к ней выяснить не так просто. Для этого необходимо применить функцию 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;