![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Динамически создаваемые псевдонимыDelphi , Базы данных , AliasИспользование псевдонима для доступа к базе данных обеспечивает независимость программы от размещения данных в системе, позволяет размещать программу работы с данными и базу данных на разных дисках компьютера, в том числе и на сетевом. Вместе с тем, для простых баз данных типичным решением является размещение базы данных в отдельном подкаталоге того каталога, в котором находится программа работы с базой данных. Таким образом, программа работы с базой данных всегда "знает", где находятся данные. При таком подходе можно отказаться от создания псевдонима при помощи BDE Administrator и возложить задачу создания псевдонима на программу работы с базой данных. Причем, псевдоним будет создаваться автоматически во время запуска программы и уничтожаться во время завершения ее работы. Очевидно, что такой подход облегчает администрирование базы данных. В качестве иллюстрации сказанного в листинге приведен вариант программы работы с базой данных "Школа", которая для доступа к базе данных использует динамически создаваемый псевдоним. 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 передается полное имя каталога базы данных. Данная статья описывает использование динамически создаваемых псевдонимов для доступа к базе данных в программе, которая может быть разместлена на различных дисках компьютера. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |