While not table1.eof do

Begin

Фильтрация данных.

ХОД РАБОТЫ

 

1.Создайте на диске D: в соей рабочей папке папку ПР_8.

2.Создайте псевдоним Stud для него установите путь.

3.Создайте таблицу Студент (Student.db) содержащую следующие поля:

 

Num (*)

 

Name

Surname

Group

Kurs

Ocenka1

Ocenka2

 

Stipend

 

4.ЗапуститеDelphi.

 

 

5. Поместите на форму компоненты Table, DataSource, DBGrid, DBNavigator и свяжите их с базой данных студент.

6. Запустите приложение и введите данные о 12 студентах, обучающихся в разных группах.

7. Для того чтобы в DBGrid показывались не все данные, а только их часть можно использовать фильтрацию таблиц. Просмотрим сведения о студентах 3 курса. Для этого установите на форму кнопку «Курс», по нажатию на которую, будет выполняться фильтрация данных. В методе, соответствующем событию OnClick для кнопки установить фильтрацию данных:

begin table1.filtered:=true;

table1.Filter:='Kurs=3';{устанавливаем значение фильтра}

 

end;

 

8. Запустите приложение и нажмите на кнопку «Курс». В DBGrid отражаются только данные о студентах 3 курса.

9. Установите на форму компонент Edit для ввода номера курса.

10. В метод, соответствующий событию OnClick для кнопки внесите следующий изменения:

 

If edit1.text<>’’ then

table1.filtered:=true;

table1.Filter:='Kurs='+edit1.text;{устанавливаем значение фильтра}end;

 

Если edit1.text равно, например, 4, то значение фильтра будет Kurs=4

 

11. Запустите приложение, введите номер курса в Еdit1 и нажмите на кнопку «Курс». В DBGrid отражаются только данные о студентах выбранного курса.

12. Установите на форму кнопку «Отмена фильтра». (table1.filtered:=false;)

13. Условие фильтра может быть и составным. Например для просмотра всех отличников необходимо установить table1.Filter:='ocenka1=5 and ocenka2=5'. Установите на форму кнопку «Отличники» и проверьте работу фильтра.

 

Поиск записей в таблице.

14. Установите на форму еще один компонент edit, для ввода фамилии студента, для которого мы хотели бы получить данные.

15. Для поиска данных в общем случае (и для индексированных и для неиндексированных полей) можно использовать метод locate. Этот метод очень удобен, поскольку при наличии индекса для поля, по которому осуществляется поиск, Locate автоматически использует его; в противном случае осуществляется прямой (более медленный) поиск.

16. Установите кнопку «Точное совпадение», по нажатию на которую будет осуществляться переход на нужную запись. Пример использования метода Locate:

If not table1.locate(‘Surname’,edit2.text,[loCaseInsensitive]) then showmessage(‘Нет данных!’);

 

В методе Locate используются три аргумента:

 

§ Имя поля, по которому осуществляется поиск

§ Поисковое значение (целое, строка, вещественное и т.д.)

§ Набор опций, который используется для настройки поиска. Опция LoCaseInsensitive переводит поиск в режим, не различающий строчные и прописные буквы. Опция LoPartialKey означает, что BDE будет воспринимать как удовлетворяющие критерию записи, начало значений полей которых совпадает со значением поиска.

17. Установите кнопку«Поиск похожего»,по нажатию на которую будет осуществлятьсяпереход на наиболее похожую запись. Пример использования метода Locate:

 

If not table1.locate(‘Surname’,edit2.text,[LoPartialKey]) then showmessage(‘Нет данных!’);

 

Например, если edit1.text=’ива’, то указатель в таблице переместится на запись, где surName=’Иванов’

 

Подсчет итогов по столбцу таблицы.

 

18. Иногда приходится подводить итоги по некоторым полям всей таблице. Например, необходимо подсчитать сумму стипендий всех студентов. Для этого установите на форму под полем стипендия компонент Label и кнопку «Сумма».

19. В метод, соответствующий событию OnClick для кнопки внесите следующий код:

 

Sum:=0;

 

Table1.first;