Читать «Советы по Delphi. Версия 1.0.6» онлайн - страница 37

Валентин Озеров

LANGDRIVER=

SQLQRYMODE=

SQLPASSTHRU MODE=NOT SHARED

SCHEMA CACHE TIME=-1

PASSWORD=

7. Устанавливаем следующие параметры

SERVER NAME=C:\IBLOCAL\EXAMPLES\EMPLOYEE.GDB

USER NAME=SYSDBA

OPEN MODE=READ/WRITE

SCHEMA CACHE SIZE=8

LANGDRIVER=

SQLQRYMODE=

SQLPASSTHRU MODE=NOT SHARED

SCHEMA CACHE TIME=-1

PASSWORD=masterkey

8. В компоненте TDatabase свойство LoginPrompt устанавливаем в 'False'. Если в секции перекрытых параметров (Parameter Overrides) задан пароль (ключ PASSWORD) и свойство LoginPrompt установлено в 'False', при соединении с базой данный пароль запрашиваться не будет. Предупреждение: при неправильно указанном пароле в секции Parameter Overrides и неактивном свойстве LoginPrompt вы не сможете получить доступ к базе данных, поскольку нет возможности ввести правильный пароль – диалоговое окно "Ввод пароля" отключено свойством LoginPrompt.

9. Нажимаем кнопку OK и закрываем окно редактора.

10. В компоненте TQuery свойству DatabaseName присваиваем 'MyNewAlias'.

11. В компоненте TDataSource свойству DataSet присваиваем 'Query1'.

12. В компоненте DBGrid свойству DataSource присваиваем 'DataSource1'.

13. Создаем в компоненте TButton обработчик события OnClick.

procedure TForm1.Button1Click(Sender: TObject);

begin

 Query1.SQL.Clear;

 Query1.SQL.ADD('SELECT DISTINCT * FROM CUSTOMER C, SALES S WHERE (S.CUST_NO = C.CUST_NO) ORDER BY C.CUST_NO, C.CUSTOMER');

 Query1.Active:= True;

end;

14. Запускаем приложение.

Пример #3: Ввод псевдонима пользователем

Этот пример выводит диалоговое окно и создает псевдоним на основе информации, введенной пользователем.

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

1. Выполняем шаги 1-11 из примера #1.

2. Пишем следующий обработчик события OnClick компонента TButton:

procedure TForm1.Button1Click(Sender: TObject);

var

 NewString: string;

 ClickedOK: Boolean;

begin

 NewString:= 'C:\';

 ClickedOK:= InputQuery('Database Path', 'Path: –> C:\DELPHI\DEMOS\DATA', NewString);

 if ClickedOK then begin

  Database1.DatabaseName:= 'MyNewAlias';

  Database1.DriverName:= 'STANDARD';

  Database1.Params.Clear;

  Database1.Params.Add('Path=' + NewString);

  Table1.DatabaseName:= 'MyNewAlias';

  Table1.TableName:= 'CUSTOMER';

  Table1.Active:= True;

  DataSource1.DataSet:= Table1;

  DBGrid1.DataSource:= DataSource1;

 end;

end;

3. Запускаем приложение.

Информация о псевдонимах BDE

Как через конфигурацию 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)