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

Задание псевдонима программным путем

Следующая статья: Создание DBF-файла во время работы приложения.

Эта информация поможет разобраться в вопросе создания и использования псевдонимов баз данных в приложениях.

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

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

  • Решение 1. Создает и конфигурирует псевдоним для базы данных STANDARD (.DB, .DBF). Псевдоним затем используется компонентом TTable.
  • Решение 2. Создает и конфигурирует псевдоним для базы данных INTERBASE (.GDB). Псевдоним затем используется компонентом TQuery для подключения к двум таблицам базы данных.
  • Решение 3. Создает и конфигурирует псевдоним для базы данных STANDARD (.DB, .DBF). Демонстрация ввода псевдонима пользователем и его конфигурация во время выполнения программы.

Решение 1

Используем базу данных .DB или .DBF (STANDARD)

  1. Создаем новый проект.
  2. Располагаем на форме следующие компоненты: TDataBase, TTable, TDataSource, TDBGrid и TButton.
  3. Дважды щелкаем по компоненту TDataBase или через контекстное меню (правая кнопка мыши) вызываем редактор базы данных.
  4. Присваиваем базе данных имя «MyNewAlias». Это имя будет выполнять роль псевдонима в свойстве DatabaseName для компонентов типа TTable, TQuery, TStoredProc.
  5. Выбираем в поле Driver Name (Имя драйвера) пункт STANDARD.
  6. Нажимаем кнопку Defaults. Это автоматически добавляет путь (PATH=) в секцию перекрытых параметров (окно Parameter Overrides).
  7. Устанавливаем переменную PATH (PATH=С:\Program Files\Common Files\Borland Shared\Data).
  8. Нажимаем кнопку OK и закрываем окно редактора.
  9. В компоненте TTable свойству DatabaseName присваиваем значение «MyNewAlias».
  10. В компоненте TDataSource свойству DataSet присваиваем значение «Table1».
  11. В компоненте DBGrid свойству DataSource присваиваем значение «DataSource1».
  12. Создаем в компоненте TButton обработчик события OnClick.
  13. procedure TForm1.Button1Click(Sender: TObject);
    begin
    Table1.Tablename:='CUSTOMER';
    Table1.Active:= True;
    end;
  14. Запускаем приложение.

Примечание: В качестве альтернативы шагам 3–11 можно включить все эти действия в сам обработчик:

 procedure TForm1.Button1Click(Sender: TObject);
 begin
 Database1.DatabaseName :='MyNewAlias';
 Database1.DriverName :='STANDARD';
 Database1.Params.Clear;
 Database1.Params.Add('PATH=С:\Program Files\Common Files\ Borland Shared\Data');
 Table1.DatabaseName :='MyNewAlias';
 Table1.TableName :='CUSTOMER';
 Table1.Active:=True;
 DataSource1.DataSet:=Table1;
 DBGrid1.DataSource:=DataSource1;
 end;

Решение 2

Используем базу данных INTERBASE

- Создаем новый проект.

- Располагаем на форме следующие компоненты: - TDataBase, TQuery, TDataSource, TDBGrid и TButton.

- Посредством двойного щелчка по компоненту TDataBase или через контекстное меню (правая кнопка мыши) вызываем редактор базы данных.

- Присваиваем базе данных имя «MyNewAlias». Оно будет выполнять роль псевдонима в свойстве DatabaseName для компонентов типа TTable, TQuery, TStoredProc.

- Выбираем в поле Driver Name (имя драйвера) пункт INTRBASE.

- Нажимаем кнопку Defaults. Это автоматически добавляет путь (PATH=) в секцию перекрытых параметров (окно Parameter Overrides).

SERVER NAME=IB_SERVER:/PATH/DATABASE.GDB
USER NAME=MYNAME
OPEN MODE=READ/WRITE
SCHEMA CACHE SIZE=8
LANGDRIVER=
SQLQRYMODE=
SQLPASSTHRU MODE=SHARED
AUTOCOMMIT SCHEMA CACHE TIME=-1
MAX ROWS=-1
BATCH COUNT=200
ENABLE SCHEMA CACHE=FALSE
SCHEMA CACHE DIR=
ENABLE BCD=FALSE
BLOBS TO CACHE=64
BLOB SIZE=32
PASSWORD=Устанавливаем следующие параметры:
SERVER NAME=C:\Program Files\Common Files\Borland Shared\Data\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

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

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

В компоненте TQuery свойству DatabaseName присваиваем значение «MyNewAlias».

В компоненте TDataSource свойству DataSet присваиваем значение «Query1».

В компоненте DBGrid свойству DataSource присваиваем значение «DataSource1».

Создаем в компоненте 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;

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

Решение 3

Ввод псевдонима пользователем

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

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

Выполняем шаги 1–11 из Решения 1.

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

procedure TForm1.Button1Click(Sender: TObject);
var NewString: string; ClickedOK: Boolean;
begin NewString :='C:\'; ClickedOK:=InputQuery('Database Path','Path:', 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;

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

Интересное в интернете: Электрогитары GIBSON там, поможем с выбором лучшей модели для вас