Динамічно створювані псевдоніми

Використання псевдоніма для доступу до бази даних забезпечує незалежність програми від розміщення даних в системі, дозволяє розміщувати програму роботи з даними і базу даних на різних дисках комп’ютера, в тому числі і на мережевому. Разом з тим, для простих баз даних типовим рішенням є розміщення бази даних в окремому підкаталозі того каталогу, в якому знаходиться програма роботи з базою даних. Таким чином, програма роботи з базою даних завжди “знає “, де знаходяться дані. При такому підході можна відмовитися від створення псевдоніма за допомогою BDE Administrator і покласти завдання створення псевдоніма на програму роботи з базою даних. причому, псевдонім буде створюватися автоматично під час запуску програми і знищуватися під час завершення її роботи. очевидно, що такий підхід полегшує адміністрування бази даних.
В якості ілюстрації сказаного в лістингу 17.3 наведено варіант програми роботи з базою даних “Школа “, яка для доступу до бази даних використовує динамічно створюваний псевдонім.

Лістинг 17.3. База даних ” Школа”(Псевдонім БД створюється динамічно)

unit school3 _;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, Db, DBTables, ExtCtrls, DBCtrls, StdCtrls;

type
TForm1 = class (TForm)
Table1: TTable; // таблиця (вся база даних)
Query1: TQuery; // запит (записи БД, що задовольняють критерію вибору)
DataSource1: TDataSource; // джерело даних - таблиця або запит
DBGrid1: TDBGrid; // таблиця для відображення БД або результату виконання запиту
DBNavigator1: TDBNavigator;
DBText1: TDBText;
Button1: TButton; // кнопка запит
Button2: TButton; // кнопка Всі записи
procedure Button1Click (Sender: TObject);
procedure Button2Click (Sender: TObject);
procedure FormActivate (Sender: TObject);
private
{Private declarations}
public
{Public declarations}
end;

var
Form1: TForm1;

implementation

{$ R * .DFM}

// клацання на кнопці Запит
procedure TForm1.Button1Click (Sender: TObject);
var
fam: string [30];
begin
fam: = InputBox ( 'Вибірка інформації з БД',
'Вкажіть прізвище та клацніть на OK.', '');
if fam <> '' // користувач ввів прізвище
then
begin
with form1.Query1 do begin
Close; // закрити файл-результат виконання попереднього запиту
SQL.Clear; // видалити текст попереднього запиту
// записуємо новий запит в властивість SQL
SQL.Add ( 'SELECT Fam, Name, Class');
SQL.Add ( 'FROM >: Школа: school.db >');
SQL.Add ( 'WHERE');
SQL.Add ( '(Fam = >' + fam + '>)');
SQL.Add ( 'ORDER BY Name, Fam');
Open; // активізуємо виконання запиту
end;

if Query1.RecordCount <>; 0 then
DataSource1.DataSet: = Query1 // відобразити рез-т виконання запиту
else begin
ShowMessage ( 'В БД немає записів, які відповідають критерію запиту.');
DataSource1.DataSet: = Table1;
end;
end;
end;

// клацання на кнопці Все записи
procedure TForm1.Button2Click (Sender: TObject);
begin
DataSource1.DataSet: = Table1; // джерело даних - таблиця
end;

// активізація форми
procedure TForm1.FormActivate (Sender: TObject);
begin
with Session do
begin
ConfigMode: = cmSession;
try
{Якщо файл даних знаходитися в тому ж каталозі,
що і виконуваний файл програми, то в програмі
шлях до файлу даних може бути отриманий з командного
рядки за допомогою функції ExtractFilePath (ParamStr (0)).
У наведеному прикладі файл даних знаходитися в підкаталозі
DATA каталогу програми. }

// створимо тимчасовий псевдонім для бази даних д
AddStandardAlias ( 'Школа',
ExtractFilePath (ParamStr (0)) + 'DATA \',
'PARADOX');
Table1.Active:=True; // відкриємо базу даних
finally
ConfigMode: = cmAll;
end;
end;
end;

end.

У даному варіанті програми передбачається, що база даних міститься в підкаталозі DATA того каталогу, в якому знаходиться виконуваний файл програми. створює псевдонім процедура TForm1.FormActivate. Безпосереднє створення псевдоніма виконує процедура AddstandardAlias, якою як параметр передається ім’я псевдоніма і відповідне йому ім’я каталогу. Так як під час розробки програми можна знати, в якому каталозі буде розміщена програма роботи з базою даних і, отже, підкаталог бази даних –DATA, ім’я каталогу визначається під час роботи програми шляхом звернення до функцій ParamStr (0) і ExtractFilePatch. Значення першої-повне ім’я виконуваного файлу програми, другий – шлях до цього файлу. Таким чином, процедурі AddstandardAiias передається повне ім’я каталогу бази даних.