- •Методические указания к выполнению лабораторных работ по дисциплине
- •1. При проектировании используйте примеры программного кода непосредственно из исходных текстов программ, а не из методических описаний (*.Doc файла)
- •2. Имена отдельным модулям лучше давать по их функциональности, а не оставлять так как они даются по умолчанию (Unit1.Pas, Unit2.Pas и т.Д.)
- •3. При возникновении каких-либо ошибок в процессе выполнения работы проверьте по исходному примеру, все ли модули подключены в разделах interface и implementation, подразделе uses.
- •Теоретическое введение
- •Создание структуры таблиц бд
- •3.3 Синтез иконки прикладного приложения
- •3.4 Размеры экранных форм и их положение на экране
- •3.5 Разработка подчинённых форм
- •Создание формы
- •Размеры и положение
- •Работа приложения с бд
- •Доступ к таблицам бд. Компоненты доступа к данным. Приложение
- •AdoDataSet (Набор данных) или adoQuery (Запрос)
- •Сохранение пути к бд
- •Работа с данными
- •Обработка данных
- •Сортировка
- •Отчёты и обработки
- •Запросы, содержащие вычисления на выделенных записях таблицы (по столбцам)
- •В обработке события OnClick кнопки Button необходимо прописать следующее:
- •Разграничение прав доступа для различных пользователей
- •Организация многопользовательского режима
Сохранение пути к бд
Так как приложение может работать на разных ПК, путь к базе при этом может меняться. Поэтому следует выполнять загрузку верного пути из файла, который записан туда либо при инсталляции, либо при первом запуске, либо непосредственно изменён во время работы приложения.
Рассмотрим загрузку пути к БД. Откроем форму 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;
|