Теперь надо получить доступ к таблице «Студенты». Для этого нужно поместить на форму компонент ADOTable (вкладка ADO). У компонента ADOTable в свойстве Name нужно задать имя LichDan, в свойстве connection указать созданный ранее компонент соединения с базой данных путем выбора из выпадающего списка единственного пункта ADOConnection1. В свойстве TableName выбрать имя таблицы (Студенты). Далее можно активизировать данные (подключаться) путем выставления свойства Active в true.
Для отображения данных из таблицы устанавливается компонент DataSource (в данном случае DataSourseLD) вкладки DataAccess. Этому компоненту указывается, какую именно таблицу он должен отображать, путем выбора из выпадающего списка свойства DataSet компонента LichDan, который связан с таблицей Студенты. Приготовления в окне DataModule2 модуля данных Unit2 на этом завершаются и можно приступать реальному отображению данных.
На первом этапе необходимо определить связь компонентов главной формы (модуль Unitl) с модулем данных Unit2. Это можно сделать вручную или командой File/UseUnit (в этот момент должно быть выделено окно кода главной формы, так как модуль подключается именно к ней). В разделе implementation модуля Unitl появится запись usesUnit2;. Затем устанавливается на форме компонент-сетка - DBGrid с вкладки DataControls. Он может отображать данные в виде таблицы, добавлять, удалять и редактировать строки таблицы. Компонент сетка DBGrid1 путем указания в свойстве DataSource созданного ранее компонента DataSourseLD связывается с компонентом отображения таблицы.
Далее можно запускать данное приложение и затем создать несколько строк, отредактировать уже существующие или удалить что-нибудь. Для вставки строки используется клавиша <Ins>, а для удаления — сочетание клавиш <Ctrl>+<Del>.
Для простоты редактирования данных можно добавить компонент DBNavigator и задать свойство DataSource-DataModule2.DataSourseLD (из списка) именно так и сделано на форме «Студенты».
3.2. Организация работы с данными
Для редактирования данных и управления приложением удобно создать главное меню. В моем приложении главное меню содержит следующие подпункты:
1. Файл;
2. Редактирование;
3. Сортировка;
4. Поиск;
5. Активность студентов;
6. Ведомость;
7. О программе.
Рассмотрим работу некоторых из них.
Добавление, редактирование и удаление данных
В пункте Редактирование создаем три подпункта: Добавить запись, Редактировать запись, Удалить запись. Для этого создадим новую форму, которую подключим к модулю DataModule2.
Напротив надписей (Label) создадим компоненты DBEdit с вкладки DataControls. Эти компоненты представляют собой простые строки ввода для поля в базе данных. Чтобы компонент видел данные из нужного поля, следует указать для него в свойстве DataSource необходимую таблицу, а в свойстве DataField указать поле, которое надо редактировать.
Для обработчика кнопки «Сохранить» код следующий:
ifDataModule2.ADOTablel.ModifiedthenDataModule2.ADOTablel.Post; Для кнопки «Отмена» нужно использовать метод Cancel, отменяющий изменения текущей строки, если они не были сохранены еще с помощью метода Post, т.е. написать следующий код:
DataModule1.ADOTable1.Cancel.
После разработки формы редактирования, ее можно использовать в обработчике пункта меню Добавить запись, написав код:
DataModule2.ADOTable1.Insert; // вставка строки в таблицу EditForm.ShowModal; // вызов формы редактирования
Обработчик меню Удалить запись может реализовать следующий код: ifApplication.MessageBox (РСhаr('Вы действительно хотите удалить запись?' +DataModule2.ADOTablei1.DesignerData), 'Внимание!!!', MB OKCANCEL)=id_ OK
then DataModule2.ADOTablel .Delete;
Сортировка данных В любой базе данных существует понятие индексного поля. Индексы увеличивают скорость поиска данных и позволяют сортировать все записи. Обязательным является только главный индекс (ключевое поле) и существует всегда. Можно создавать любое количество дополнительных индексированных полей, однако индексирование отнимает дополнительное место на диске, и если таких полей будет много, то можно снизить быстродействие программы.
Для обеспечения сортировки данных по каждому полю достаточно написать обработчики событий. В своем приложении сортировка
производится по полям: «По фамилии», «По группе».
Далее приведен пример кода для выполнения сортировки по фамилии:
procedure TForml.N9Click(Sender: TObject);
begin
DataModule2.ADOTable1.IndexFieldNames:='Фамилия'; DataModule2.ADOTable2.IndexFieldNames:='Фамилия';
end;
В данном случае сортировка будет производиться по возрастанию. Для отмены сортировки необходимо указать пустую строку.
Следует помнить о том, что, если вы хотите делать сортировку по какому-либо полю, то при объявлении названия поля в MSAccess оно должно состоять из одного слова.
Фильтрация данных
Одним из эффективных и востребованных инструментов обработки данных является организация их фильтрации. Для организации фильтрации в компоненте TADOTable есть свойства Filter и Filtered. Свойство Filtered определяет является ли таблица фильтруемой и только если оно имеет значение true, то воспринимается свойство Filter как строка содержащая текст условия определяемого в виде:
Поле [Оператор сравнения] 'Значение'.
В приложении «Учет общественной активности студентов академической группы» реализована функция фильтрации данных для пункта главного меню Активность студентов.
Данный пункт содержит следующие подпункты :
1. По видам деятельности:
1.1. Спортсмены;
Код:
procedure TForml.N19Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTablel.Filter:='Cпopт="+"';
DataModule2.ADOTable2.Filter:='Cпopт="+'";
end;
1.2. КВНщики;
1.3. Старосты.
2. АктивКод:
procedure TForml.N17Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTablel.Filter:='Cпopт="+" and КВН ="+" and Староста ="+'";
DataModule2.ADOTable2.Filter:='Cпopт="+" and КВН ="+" and Староста ="+'";
end;
3. Неактивные студенты
4. Отменить отбор
Код:
procedure
TForml.N25Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=false; DataModule2.ADOTable2.Filtered:=false;
end;
Нужно обратить внимание на то, что значения нужно указывать в одинарных кавычках. Но так как одинарные кавычки используются для ограничения строк, то чтобы внутри строки поставить одинарную кавычку, ее нужно поставить дважды. Именно таким способом ставиться одинарная кавычка перед значением. После значения нужно поставить одинарную кавычку и закрыть строку, поэтому ставиться три одинарных кавычки (две для того, чтобы поставить кавычку для значения и одна для конца строки).
Организация поиска данных
В данном приложении организован поиск по фамилии, по группе, и по обоим параметрам. Он организован в виде формы
Далее приведен пример кода для выполнения поиска по фамилии: procedureTForm4.Button1Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=true;
DataModule2.ADOTable2.Filtered:=true;
DataModule2.ADOTable1.Filter:= 'Фaмилия='"+Edit1.Text+"";
DataModule2.ADOTable2.Filter:= 'Фaмилия='"+Edit1.Text+"";
end;
Дляотменыпоискаиспользуетсякод:
procedure TForml.N14Click(Sender: TObject);
begin
DataModule2.ADOTable1.Filtered:=false;
DataModule2.ADOTable2.Filtered:=false;
end;
3.3. Создание запроса «Ведомость»
Для реализации данного запроса создадим еще один ADOTable и DataSourse, которые подсоединяются к той же таблице Студенты, но выполняют чуть другие функции.
Данный запрос содержит поля КодСтудента, Фамилия, Год рождения, Группа и Стипендия. Последнее поле является вычисляемым. Для его создания нужно щелкнуть правой кнопкой на элементе ADOTable2 и выбрать пункт NewField. В появившемся окне свойств нового поля заполнить следующие поля: Name - назвать поле Summa: Type - тип Float: FieldType (тип поля) - выбрать calculated, чтобы создать вычисляемое поле.
Теперь создадим обработчик события OnCalcFields. Это событие вызывается каждый раз, когда надо пересчитать вычисляемые поля.
Для этого выделим компонент ADOTable2 и выберем в Инспекторе объектов вкладку «События». Затем сделаем двойной щелчок в пустой строке, справа от пункта OnCalcFields. Появится окно кода. В этом обработчике для нахождения стипендии каждого студента пишем код (см. Приложение).
Для отображения данных в элементе DBGrid1 по компоненту ADOTable2 в код включаем следующие строки:
procedure TForm1.N23Click(Sender: TObject);
begin
DBGrid1.DataSource:=DataModule2.DataSource2;
end;
При выборе пункта меню Ведомость - Ведомость по стипендии выходит отчет, который содержит информацию о стипендии каждого студента. Данный показатель зависит от степени активности каждого студента. При этом базовая стипендия = 500 руб.
Для данного запроса также реализованы функции сортировки, поиска, отбора студентов по видам деятельности, но добавить и редактировать запись здесь не возможно.
Заключение
Использование компьютерных технологий, при использовании автоматизированных программ позволяет избежать ненужных бумажных проволочек и повышает надежность работы, обеспечивает надлежащую наглядность, экономит немалое количество времени.
В любой момент времени в создаваемую по ходу процесса решения задачи базу данных можно вносить необходимые изменения. В обычных документах и ведомостях, написанных от руки и на бумажном носителе, делать такое гораздо проблематичнее, а порой и просто недопустимо.
Ещё десять лет назад, программирование баз данных было очень сложным занятием. За какие-либо достижения в этой области многие программисты получили в своё время докторские степени. Сейчас уже такое трудно себе представить, потому что благодаря Delphi, процесс написания программ упростился, а количество разновидностей баз данных уже исчисляется десятками.
В данном курсовом проекте разработана архитектура базы «Студенты» и показана реализация связи данной базы данных с программой Delphi через компонент ADOConnection.
Разработанное приложение может существенно облегчить работу деканата любого учебного заведения.