Використання псевдоніма для доступу до бази даних забезпечує незалежність програми від розміщення даних в системі, дозволяє розміщувати програму роботи з даними і базу даних на різних дисках комп’ютера, в тому числі і на мережевому. Разом з тим, для простих баз даних типовим рішенням є розміщення бази даних в окремому підкаталозі того каталогу, в якому знаходиться програма роботи з базою даних. Таким чином, програма роботи з базою даних завжди “знає “, де знаходяться дані. При такому підході можна відмовитися від створення псевдоніма за допомогою 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 передається повне ім’я каталогу бази даних.