Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛБ(ПРИС)_Файл-сервер_2016.doc
Скачиваний:
5
Добавлен:
17.06.2023
Размер:
5.49 Mб
Скачать
    1. Сохранение пути к бд

Так как приложение может работать на разных ПК, путь к базе при этом может меняться. Поэтому следует выполнять загрузку верного пути из файла, который записан туда либо при инсталляции, либо при первом запуске, либо непосредственно изменён во время работы приложения.

Рассмотрим загрузку пути к БД. Откроем форму DM модуля данных. Добавим в раздел Uses два модуля, Forms и IniFiles. В событии BeforeConnect компонента ADOConnection1 изменим код следующим образом:

procedure TDM.ADOConnection1BeforeConnect(Sender: TObject);

var DBPath:widestring; //путь к БД

F :TIniFile; // файл с путем к БД

begin

//создаём объект Ini-файла, ассоциируя его с физическим файлом на диске

//свойство ExeName объекта Application хранит полный путь включая имя файла, например C:\Base\Data.db

//функция ExtractFilePath(const FileName: string): string возвращает путь к папке содержащей файл по его полному пути, например C:\Base\

F:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini');

//считываем из раздела Section_DBPath значение параметра Path в переменную DBPath

DBPath:=F.ReadString('Section_DBPath','Path', '');

//составляем ConnectionString

ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DBPath+'SOTRUDNIKI.mdb;Persist Security Info=False';

end;

Причём структура Ini-файла должна быть примерно такой, как показано на рисунке 16.

Рисунок 16 – Пример Ini-файла

Для организации связи базы данных непосредственно во время работы приложения необходимо выполнить следующие действия:

- поместить на форму компонент OpenDialog с вкладки Dialogs;

- установить в свойстве Filter значение *.mdb|SOTRUDNIKI.mdb;

- в событии onClick нажатии пункта главного меню «Связать с БД» ввести следующий код:

procedure TMainForm.RelayNClick(Sender: TObject);

var F:TiniFile;//дискриптор ini-файла

DBPath:widestring; //путь к БД

begin

//создаём объект Ini-файла, ассоциируя его с физическим файлом на диске

F:=TiniFile.Create(ExtractFilePath(Application.ExeName)+'Options.ini');

// запускаем диалог открытия, если запущен успешно, то...

if OpenDialog1.Execute then

begin

// сохраняем указанный в диалоговом окне пользователем путь

DBPath:=ExtractFilePath(OpenDialog1.FileName);

//записываем в раздел Section_DBPath значение переменной DBPath в параметр Path ini-файла

F.WriteString('Section_DBPath','Path',DBPath);

DM.ADOConnection1.Close;

//формируем ConnectionString

DM.ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+DBPath+'SOTRUDNIKI.mdb;Persist Security Info=False';

//открываем соединение

DM.ADOConnection1.Open;

end;

// освобождаем память

F.Free;

end;