Автор: admin | 14.12.2007 в 2:14 | Рубрики: Alias, Базы данных

Есть три способа сделать это… No1 годится только для постоянных псевдонимов BDE. No2 работает с BDE и локальными псевдонимами, и No3 работает с BDE и локальными псевдонимами, используя “тяжелый” путь, через вызовы DBI.
Читать полностью…

uses DB, DBTables, DBITypes, DBIProcs;

procedure TForm1.FormCreate(Sender: TObject);
begin
Session.GetAliasNames(ListBox1.Items);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
var
tStr: array[0..100] of char;
Desc: DBDesc;
{
The DBDesc structure describes a database, using the following fields:

szName DBINAME Specifies the database alias name.
szText DBINAME Descriptive text.
szPhyName DBIPATH Specifies the physical name/path.
szDbType DBINAME Specifies the database type.
}
begin
if ListBox1.Items.Count = 0 then
exit;
StrPLCopy(tStr, ListBox1.Items.Strings[ListBox1.ItemIndex], High(tStr));
DbiGetDatabaseDesc(tStr, @Desc);
with Desc do
begin
Label1.Caption := StrPas(Desc.szName);
Label2.Caption := StrPas(Desc.szPhyName);
Label3.Caption := StrPas(Desc.szDbType);
Label4.Caption := StrPas(Desc.szText);
end;
end;

//Для этого надо в Uses добавить ExtCtrls
Session.GetAliasNames(ComboBox1.Items);

По Table(Query).Database:

uses
DbiProcs;

function GetDirByDatabase(Database: TDatabase): string;
var
pszDir: PChar;
begin
pszDir := StrAlloc(255);
try
DbiGetDirectory(Database.Handle, True, pszDir);
Result := StrPas(pszDir);
finally
StrDispose(pszDir);
end;
end;

По алиасу:

function GetPhNameByAlias(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’; {requires a name — is ignored}
Database.Connected := True; {connect without opening any table}
DbiGetDirectory(Database.Handle, True, pszDir); {get the dir.}
Database.Connected := False; {disconnect}
Result := StrPas(pszDir); {convert to a string}
finally
Database.Free; {free memory}
end;
end;

Автор: admin | в 2:14 | Рубрики: Alias, Базы данных

var
MyAliasPath: string;
const
AliasName = ‘MyAlias’;

{**** Получаем из BDE путь MyAlias}

ParamsList := TStringList.Create;

try
with Session do
begin
Session.GetAliasNames(ParamsList);
Session.GetAliasParams(AliasName, ParamsList);
MyAliasPath := Copy(ParamsList[0], 6, 50) + ‘\’;
end;
finally
ParamsList.Free;
end;

Как через конфигурацию IDAPI получить физический каталог расположения базы данных, зная ее псевдоним?

Обратите внимание на метод GetAliasParams класса TSession.

Возвращенная строка будет содержать искомый путь.

Я пользуюсь следующей функцией:

uses 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;

Я делаю это все время. У меня есть INI-файл, который сообщает, где можно найти таблицы и каталоги их расположения. Вот как я это делаю:

procedure CheckTable(var Table: TTable; var TName: string);
var
ChangePath: boolean;
Path: string;
ActiveState: Boolean;
begin
if (TName = ”) then
TName := Table.TableName
else
with Table do
begin
ActiveState := Active;
Close;
Path := ExtractFilePath(TName);
ChangePath := HasAttr(DatabaseName, faDirectory) or
(CompareText(DatabaseName, Path) <> 0);
if (Length(Path) > 0) and ChangePath then
DatabaseName := Path;
if (CompareText(ExtractFileName(Tname), TableName) <> 0)
then
TableName := ExtractFileName(Tname);
Active := ActiveState;
end;
end;

Эта информация поможет вам разобраться в вопросе создания и использования ПСЕВДОНИМОВ баз данных в ваших приложениях.

Вне Delphi создание и конфигурирование псевдонимов осуществляется утилитой BDECFG.EXE. Тем не менее, применяя компонент TDatabase, вы можете в вашем приложении создать и использовать псевдоним, не определенный в IDAPI.CFG.

Важно понять, что создав псевдоним, использовать его можно только в текущем сеансе вашего приложения. Псевдонимы определяеют расположение таблиц базы данных и параметры связи с сервером баз данных. В конце концов, вы получаете преимущества использования псевдонимов в пределах вашего приложения без необходимости беспокоиться о наличии их в конфигурационном файле IDAPI.CFG в момент инициализации приложения.
Читать полностью…

Автор: admin | в 2:14 | Рубрики: Alias, Базы данных

procedure CreateAlias();
const
DlPs = 5;
var
wrstr, wrstr1 :string;
AParams: TStringList;
Psevdonm: array [1..DlPs] of string;
i: integer;
begin
//Заполним массив
Psevdonm[1] := ‘TERMNNSI,NSI’; // имя,каталог
Psevdonm[2] := ‘TERMNBASE,BASE’;
Psevdonm[3] := ‘TERMNTNL,BASE\TNL’;
Psevdonm[4] := ‘TERMNARH,ARH’;
Psevdonm[5] := ‘TERMNTELE,TELE’;
// if not DirectoryExists(datapath) then begin
// createdir(datapath) ;
// end;
for i := 1 to DlPs do
begin
// Для начала проверим каталоги
wrstr1 := Copy(Psevdonm[i],Pos(’,',Psevdonm[i])+1, Length(Psevdonm[i])-Pos(’,',Psevdonm[i])+1);
if not DirectoryExists(wrstr1) then
begin
CreateDirectory(PChar(CurrntDir+’\'+wrstr1),nil);
end;

// Если нет псевдонима, то создадим или подправим
wrstr := Copy(Psevdonm[i],1,Pos(’,',Psevdonm[i])-1);
if not Session.IsAlias(wrstr) then
begin
try
Session.AddStandardAlias(wrstr,wrstr1,’PARADOX’);
Session.SaveConfigFile;
except
SaveTekJrn(’ERR:Ошибка создания алиаса - ‘+wrstr);
Exit;
end;
end;
//Настроим алиас
AParams := TStringList.Create;
AParams.Add(’PATH=’ + CurrntDir+’\'+wrstr1);
Session.ModifyAlias(wrstr,AParams);
Session.SaveConfigFile;
// Освобождение списка
AParams.Free;
end;
end;

Автор: admin | в 2:14 | Рубрики: Alias

type
TSQLConfigDataSource =
function(hwndParent: Integer;
fRequest: Integer;
lpszDriverString: string;
lpszAttributes: string): Smallint; stdcall;

function SQLConfigDataSource(hwndParent: Integer; fRequest: Integer;
lpszDriverString: string; lpszAttributes: string): Integer; stdcall;
var
func: TSQLConfigDataSource;
OdbccpHMODULE: HMODULE;

begin
OdbccpHMODULE := LoadLibrary(’c:\WINDOWS\SYSTEM\odbccp32.dll’);
if OdbccpHMODULE = 0 then
raise Exception.Create(SysErrorMessage(GetLastError));
func := GetProcAddress(OdbccpHMODULE, PChar(’SQLConfigDataSource’));
if @func = nil then
raise Exception.Create(’Error Getting adress for SQLConfigDataSource’ +
SysErrorMessage(GetLastError));
Result := func(hwndParent, fRequest, lpszDriverString, lpszAttributes);
FreeLibrary(OdbccpHMODULE);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if SQLConfigDataSource(0, 1, ‘Microsoft Excel Driver (*.xls)’,
Format(’DSN=%s;DBQ=%s;DriverID=790′, [’MyDSNName’,
‘c:\temp\temp.xls’])) <> 1 then
ShowMessage(’Cannot create ODBC alias’);
end;
PS: Ecли вы собираетесь работать с этим DSN через BDE, то надо закрыть и открыть Session, иначе он не будет доступен

Этот пример показывает один из способов создания ODBC драйвера для доступа к файлу Access MDB. Подобная операция применима к большинству файлов баз данных. Естевственно, Вам потребуется MDB файл, для того, чтобы связать его с DSN.

Читать полностью…

Автор: admin | в 2:14 | Рубрики: Alias, Базы данных

DbiAddAlias (пропущено в BDE.HLP & Руководстве пользователя)

Синтаксис:

DBIResult DbiAddAlias( [hCfg], pszAliasName, pszDriverType, pszParams, bPersistent );
Описание:
DbiAddAlias добавляет псевдоним в конфигурационный файл, связанный с
текущим сеансом.
Параметры:
hCfg Type: hDBICfg (Входящий)
Для BDE 2.5 данный параметр должен быть NULL. Указывает, что
конфигурация действует в течение текущего сеанса.
Другие значения для BDE 2.5 не поддерживаются.

pszAliasName Type: pCHAR (Входящий)
Указатель на имя псевдонима. Это имя нового псевдонима, который
должен быть добавлен.

pszDriverType Type: pCHAR (Входящий)
Указатель на тип устройства. Это тип устройства для добавляемого
псевдонима. Если данный параметр NULL, псевдоним будет добавлен
для базы данных STANDARD. Если указан szPARADOX, szDBASE или szASCII,
будет добавлена запись в генератор псевдонимов базы данных STANDARD
для указания того, что данный тип будет предпочтительным типом
устройства. Если указано имя устройства, то оно должно существовать
в измененном файле конфигурации.

pszParams Type: pCHAR (Входящий)
Указатель на список дополнительных параметров. Данный список
определяется следующим образом:
“AliasOption: Option Data[;AliasOption: Option Data][;…]”.
AliasOption должен соответствовать одному из значений, возвращаемому
DbiOpenCfgInfoList. Для псевдонимов базы данных STANDARD, единственно
необходимый параметр - PATH, остальные игнорируются (без ошибок).

Пример 1: Чтобы установить путь для использования базы данных
STANDARD:
“PATH:c:\mydata”

Пример 2: Чтобы установить имя сервера и имя пользователя для
использования драйвера SQL:
“SERVER NAME: server:/path/database;USER NAME: myname”

bPersistent Type: BOOL (Входящий)
Определяет область действия нового псевдонима.
TRUE Сохраняется в файле конфигурации для будующих сеансов.
FALSE Для использования только в течение текущего сеанса.
Псевдоним удаляется в конце сеанса (или при выходе из
программы).

Использование:
Созданный данной функцией псевдоним будет иметь параметры по умолчанию,
хранимые в списке параметров драйверов “DB OPEN”, если только оне не
перекрыты в параметре pszParams. Вы можете использовать
DbiOpenCfgInfoList, чтобы изменить значение по умолчанию после добавления
псевдонима с помощью DbiAddAlias.

Для псевдонимов стандартной базы данных все параметры pszParams за
исключением PATH игнорируются.

Предварительные условия:
DbiInit должен вызываться до вызова DbiAddAlias.

Возвращаемые значения DBIResult:
DBIERR_INVALIDPARAM
Имя псевдонима Null или один из следующих типов pszDriverType:
szASCII, szDBASE, szPARADOX. В последнем случае используйте
NULL pszDriverType для указания на базу данных STANDARD.

DBIERR_NONE
Псевдоним был успешно добавлен.

DBIERR_NAMENOTUNIQUE
Существует другой псевдоним с тем же именем (работает
когда bPersistent равен TRUE).

DBIERR_OBJNOTFOUND
Один (или более) из дополнительных параметров, указанных в
pszParams не соответствуют правильным типам в секции драйверов
конфигурационного файла.

DBIERR_UNKNOWNDRIVER
Имя устройства в конфигурационном файле при сопоставлении с
pszDriverType не найдено.

Смотри также:
DbiInit, DbiOpenCfgInfoList

Использование псевдонима для доступа к базе данных обеспечивает независимость программы от размещения данных в системе, позволяет размещать программу работы с данными и базу данных на разных дисках компьютера, в том числе и на сетевом. Вместе с тем, для простых баз данных типичным решением является размещение базы данных в отдельном подкаталоге того каталога, в котором находится программа работы с базой данных. Таким образом, программа работы с базой данных всегда “знает”, где находятся данные. При таком подходе можно отказаться от создания псевдонима при помощи BDE Administrator и возложить задачу создания псевдонима на программу работы с базой данных. Причем, псевдоним будет создаваться автоматически во время запуска программы и уничтожаться во время завершения ее работы. Очевидно, что такой подход облегчает администрирование базы данных. Читать полностью…

Автор: admin | в 1:13 | Рубрики: Alias, Базы данных

Попробуйте следующий код:

var
theStrList: TStringList;
GPath: String;
begin
theStrList := TStringList.Create;
{Используем GetAliasParams для получения псевдонимов и ассоциированных с ними путей}
Session.GetAliasParams(<Здесь псевдоним из выпадающего списка>,theStrList);
{Удаляем первые шесть символов, которые всегда равны “PATH=”}
GPath := copy(theStrList[0],6,length(theStrList[0]))
theStrList.Free;
end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Создание псевдонима базы данных с указанием пути к каталогу с базой

Данная процедура создает нужный псевдоним (Alias), если он не существует, для
базы данных, прописывает путь к базе данных. Если такой псевдоним существует,
то проверяется его соответствие заданным параметрам.

Зависимости: DBTables
Автор: Александр, rda@im.net.ua, Мелитополь
Copyright: Help Delphi
Дата: 28 апреля 2002 г.
***************************************************** }

procedure Create_Alias;
var
AParams: TStringList;
Dir: string;
begin
Dir := ExtractFilePath(ParamStr(0)) + ‘BASE’; //Путь к базе. В данном случае
//это \Каталог программы\BASE
AParams := TStringList.Create;
if not Session.IsAlias(’cssm’) then //Проверка существования псевдонима
//cssm
begin
Session.AddStandardAlias(’cssm’, Dir, ‘PARADOX’);
end
else
try
begin
AParams.Clear;
AParams.Add(’PATH=’ + Dir);
Session.ModifyAlias(’cssm’, AParams);
Session.SaveConfigFile;
end;
finally
AParams.Free;
end;
end;

Автор: admin | в 1:13 | Рубрики: Alias, Базы данных

procedure CheckAlias(const AliasName, AliasType, AliasPath: String);
{ Если алиас не существует, создать его }
var
SList: TStrings;
i: Integer;
AliasFound: Boolean;
begin
{ Проверка существования алиса BDE }
try
SList := TStringList.Create;
Session.GetAliasNames(SList);
AliasFound := False;
for i:=0 to SList.Count-1 do
if SList[i]=AliasName then
begin
AliasFound := True;
break;
end;
finally
SList.Free;
end;
if AliasFound then
begin
try
SList := TStringList.Create;
Session.GetAliasParams(AliasName,SList);
{А в 4-ой версии SList[2]!!! и без слова Path }
if SList[0]< > ‘PATH=’+AliasPath then { Правильно ли задан путь }
begin
SList[0] := ‘PATH=’+AliasPath;
Session.ModifyAlias(AliasName,SList);
end;
finally
SList.Free;
end;
end
else
Session.AddStandardAlias(AliasName,AliasPath,AliasType); { Создать новый алиас }
Session.SaveConfigFile;
end;

Используйте 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;

По таблице (фактически по Database) получить физическое местонахождение.

Примечание: Database можно создать явно, если нет, Дельфи сама его создаст, доступ к ней по Table(Query).Database

uses DbiProcs;

function GetDirByDatabase( Database: TDatabase ): string;
var
pszDir: PChar;
begin
pszDir := StrAlloc( 255 );
try
DbiGetDirectory( Database.Handle, True, pszDir );
Result := StrPas( pszDir );
finally
StrDispose( pszDir );
end;
end;

По алиасу

function GetPhNameByAlias( 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’; {requires a name — is ignored}
Database.Connected := True; {connect without opening any table}
DbiGetDirectory( Database.Handle, True, pszDir ); {get the dir.}
Database.Connected := False; {disconnect}
Result := StrPas( pszDir ); {convert to a string}
finally
Database.Free; {free memory}
StrDispose( pszDir );
end;
end;

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Добавляет (модифицирует) указанный пользовательский
ODBC DSN-источник для доступа к MS SQL-серверу

Модуль управления источниками DSN

Состоит из одной функции добавления (а при наличии - содержимое
модицицируется) пользовательского DSN-источника для доступа к MS
SQL-серверу. Кроме того в клиентских настройках прописывается протокол
TCP/IP и порт 1433 (за эту часть 100% уверенности нет в том смысле, что мне
не удалось найти документированного интерфейса для этих изменений).

Приведено в виде модуля для того, чтобы включить определение ф-ции
SQLConfigDataSource (т.к. не нашел этого описания в поставке Delphi).

Ссылки на источники:
http://www.rsdn.ru/qna/default.asp?db/datasrc.xml
http://www.bbd.net.ru/modules.php?op=modload&name=News&file=article&sid=16
http://www.firststeps.ru/mfc/odbc/r.php?14

Зависимости: Windows, Registry
Автор: KSergey, s_wr@mail.ru, ICQ:93229204, Новосибирск
Copyright: В качестве справки по работе с ф-цией
SQLConfigDataSource использовались источники, ссылки на которые есть в описании
Дата: 17 июня 2003 г.
***************************************************** }

interface

uses
Windows, Registry;

function AddDSNMSSQLSource(const ADSNName, AServer, ADataBase: string;
ADescription: string = ”): Boolean;
function SQLConfigDataSource(
hwndParent: HWND; // Указатель на окно вызвавшее функцию
fRequest: WORD; // Тип запроса
lpszDriver: PChar; // Пользовательское имя драйвера
lpszAttributes: PChar // атрибуты
): Boolean; stdcall; external ‘odbccp32.dll’ name ‘SQLConfigDataSource’;

const
ODBC_ADD_DSN = 1; // Add data source
ODBC_CONFIG_DSN = 2; // Configure (edit) data source
ODBC_REMOVE_DSN = 3; // Remove data source

implementation

{******************************************************************************
* AddDSNMSSQLSource - добавляет (модифицирует) пользовательский DSN-источник
* для доступа к MS SQL серверу
* Дополнительно в клиентских настройках прописывается
* протокол TCP/IP и порт 1433
*
* Вход: ADSNName - имя DSN-источника
* AServer - имя сервера
* ADataBase - наименование БД на сервере по умолчанию
* ADescription - описание источника (необязательный параметр)
*
* Выход: TRUE - в случае успеха, FALSE - в противном случае
******************************************************************************}

function AddDSNMSSQLSource(const ADSNName, AServer, ADataBase: string;
ADescription: string = ”): Boolean;
const
driver = ‘SQL Server’;
var
params: string;

// эта ф-ция прописывает необходимые настройки для доступа к MS SQL по TCP/IP
// и на порт 1433
function SetNetLibParam: Boolean;
begin
Result := FALSE;
with TRegistry.Create do
try
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey(’\Software\Microsoft\MSSQLServer\Client’, TRUE) then
if not KeyExists(’ConnectTo’) then
CreateKey(’ConnectTo’);
if OpenKey(’ConnectTo’, TRUE) then
begin
WriteString(AServer, ‘DBMSSOCN,’ + AServer + ‘,1433′);
Result := TRUE;
end;
finally
CloseKey;
Free;
end;
end;

begin
params := ‘DSN=’ + ADSNName + #0′Server=’ + AServer + #0′DataBase= ‘ +
ADataBase + #0′Description=’ + ADescription + #0#0;
Result := SQLConfigDataSource(0, ODBC_ADD_DSN, PChar(driver), PChar(params));
Result := Result and SetNetLibParam;
end;

end.
Пример использования:

if not AddDNSMSSQLSource(’ServerDSN’, ‘big_server’, ‘Clients’,
‘Для программы работы с клиентами’) then
DoError;

var
pszAliasName: PChar; { Имя псевдонима }
pszDriverType: PChar; { Тип драйвера для псевдонима }
pszParams: PChar; { Дополнительные параметры }
bPersist: Bool; { Постоянный или временный псевдоним }
dbiRes: Integer; { Возвращаемый код }
begin
pszAliasName := strAlloc(25);
pszDriverType := strAlloc(25);
pszParams := strAlloc(100);

try
bPersist := True;
strPcopy(pszAliasName, ‘Lance’);
strPcopy(pszDriverType, ‘PARADOX’);
strPcopy(pszParams, ‘PATH:’ + ‘c:\Paradox\’);

dbiRes := DbiAddAlias(nil, pszAliasName, pszDriverType, pszParams,
bPersist);

finally
strDispose(pszAliasName);
strDispose(pszDriverType);
strDispose(pszParams);
end;
end;

Как с помощью DELPHI попроще изменить путь псевдонима (Alias Path)?

Вы можете создать виртуальный псевдоним (т.е. не сохраняемый в IDAPI.CFG) с помощью компонента TDataBase… и затем изменить ассоциированный DOS-путь на нужный вам.

Для примера:

var
d : TDatabase;
begin
d := TDatabase.Create(Application);
d.DataBaseName := ‘TEST_ALIAS’;
d.DriverName := ‘STANDARD’;
d.Params.Add(’PATH=C:\DBDEMOS’);
d.Connected := True;
end;

…приведенный код может быть и бесполезен, но он показывает как это можно сделать. Также это можно сделать во время разработки приложения с помощью Инспектора Объектов.

Автор: admin | в 1:13 | Рубрики: Alias, Базы данных

var
d : TDataBase;
begin
d := TDataBase.Create(Application);
d.DataBaseName := ‘PRIV’;
d.DriverName := ‘STANDARD’;
d.Params.Add(’PATH=’+Session.PrivateDir);
d.Connected := True;
end;

…теперь вы имеете псевдоним с именем ‘PRIV’, указывающий на частный каталог

Автор: admin | в 1:13 | Рубрики: Alias, Базы данных

procedure TForm1.Button3Click(Sender: TObject);
var
MyList: TStringList;
begin
MyList := TStringList.Create;
try
with MyList do
begin
Add(’SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB’);
Add(’USER NAME=MYNAME’);
end;
Session1.AddAlias(’NewIBAlias’, ‘INTRBASE’, MyList);
finally
MyList.Free;
end;
end;

Вот маленький примерчик того, как в Delphi можно получить информацию о псевдонимах. Для начала создайте новый проект с ListBox и тремя метками (с именамиListBox1, Label1, Label2 и Label3). Затем создайте обработчик события формы OnCreate с примерно следующим кодом:

procedure TForm1.FormCreate(Sender: TObject);
begin
Session.GetAliasNames(ListBox1.Items);
end;

Теперь создайте обработчик OnClick для ListBox:

procedure TForm1.ListBox1Click(Sender: TObject);
var
tStr: array[0..100] of char;
Desc: DBDesc;
begin
if ListBox1.Items.Count = 0 then
exit;
StrPLCopy(tStr, ListBox1.Items.Strings[ListBox1.ItemIndex], High(tStr));
DbiGetDatabaseDesc(tStr, @Desc);
with Desc do
begin
Label1.Caption := StrPas(Desc.szName);
Label2.Caption := StrPas(Desc.szPhyName);
Label3.Caption := StrPas(Desc.szDbType);
end;
end;

Добавьте следующие модули в секцию ‘uses’ в верхней части модуля:

DB, DBTables, DBITypes, DBIProcs;

Теперь вы можете увидеть путь для всех ваших стандартных псевдонимов (Paradox и dBase).

Автор: admin | в 1:13 | Рубрики: Alias

Попробуйте это:

type
TDataMod = class(TDataModule)
Database: TDatabase;
public
procedure TempAlias(NewAlias, NewDir: string);
end;

procedure TDataMod.TempAlias(NewAlias, NewDir: string);
begin
with Session do
if not IsAlias(NewAlias) then
begin
ConfigMode := cmSession; (* NewAlias будет ВРЕМЕННЫМ *)
try
AddStandardAlias(NewAlias, NewDir, ‘PARADOX’);
Database.Close;
Database.AliasName := NewAlias;
Database.Open;
finally
ConfigMode := cmAll;
end;
end;
end;

Комментарии:

a) Поместите компонент Database на форму DataModule;
b) Задайте свойству DatabaseName имя базы данных, например, ‘TempDB’;
c) Задайте свойству DatabaseName компонента TTable значение = ‘TempDB’
d) Для получения дополнительной информации ознакомьтесь с примером MastApp, поставляемым вместе с D2.