Навигация по набору данных
Основная литература
1. Матвеев А.Н. Оптика. - М.: Высшая школа, 1985. §44, с.281-284. 2. Ахманов С.А., Никитин С.Ю. Физическая оптика. - М.: Изд. МГУ, 1998.
Дополнительная литература
1. Борн М., Вольф Э. Основы оптики. - М.: Наука, 1973. 2. Калитеевский Н.И. Волновая оптика. - М.: Наука, 1971.
Лабораторная работа № 3 «Индексы»
Tab – табельный номер сотрудника (автоинкрементное поле) Name – фамилия и.о. Post – должность Salary – оклад BirthDay – дата рождения Otd – отдел С помощью утилиты DataBase DeskTop добавьте к созданной индексы по табельному номеру (по умолчанию индекс по первичному ключу безымянный), по фамилии (indFam), по дате рождения (indDate) и по отделу (indOtd), т.е. по всем полям сортировки.
3.Добавьте на форму навигатор, задайте для него источник данных DataSource1. 4. Наполните таблицу данными (10-15 записей) см. рисунок. Для того, чтобы сделать таблицу Table1 активной и отсортировать данные по алфавиту фамилий, необходимо подключить индекс по фамилии сотрудников (indName). Добавьте процедуру активизации формы: procedure TForm1.FormActivate(Sender: TObject); begin Table1.IndexName:= 'indName'; Table1.Active:=true; end; Добавьте на форму группу радио кнопок RadioGroupl, которые определяют поле сортировки: по фамилии, по табельному номеру, по дате рождения. Количество и названия кнопок устанавливаются с помощью свойства Items Инспектора объекта. Сначала пользователь выбирает поле сортировки. Сортировка выполняется после нажатия кнопки btnSort с названием Сортировка. Расположите ее на форме рядом с группой радио кнопок. Процедура нажатия обрабатывает выбор пользователя и в зависимости от него (свойство ItemIndex) подключает тот или иной индекс. procedure Tform1.btnSortClick(Sender: TObject); Begin case RadioGroupl.ItemIndex of 0: Tablel.IndexName:='indName';
1: Tablel. IndexName: = 'indDate'; 2: Tablel.IndexName:= ‘’; // это первичный ключ таблицы 3: Tablel.IndexName:= ‘indOtd’; end; end;
Навигация по набору данных Перед перемещением указателя текущей записи набор данных автоматически переводится в режим просмотра. Для перемещения указателя текущей записи в наборе данных используются следующие методы: - процедура First — установка на первую запись; - процедура Next — установка на следующую запись (при вызове метода для последней записи указатель не перемещается); - процедура Last — установка на последнюю запись; - процедура Prior - установка на предыдущую запись; - функция MoveBy (Distance: integer): integer — перемещение на число записей, определяемое параметром Distance. Если его значение больше нуля, то перемещение осуществляется вперед, если меньше нуля — то назад. В качестве результата возвращается число записей, на которое переместился указатель. При перемещении указателя текущей записи учитываются ограничения и фильтр, определенные для набора данных. Таким образом, перемещение выполняется по записям набора данных, которые он содержит в текущий момент времени. Число записей определяется свойством RecordCount. Значения указателя текущей записи изменяют также методы, связанные с поиском записей, например, метод FindFirst. Для следующего примера разместите на форме два компонента: Метку Label2 для размещения вычисления суммарного оклада и кнопку Button1 с названием Вычислить. Метка Label1 пусть хранит пояснительный текст: Суммарный оклад. Рассмотрим следующий пример: procedure Tform1.Button1Click(Sender: TObject); var s: real; n: longint; begin s:=0; Table1.First; // Установка текущего указателя на первую запись for n:= 1 to Table1.RecordCount do begin s:=s+Table1.FieldByName('Salary').AsFloat; Table1.Next; //Перемещение текущего указателя на следующую запись end; Label2.Caption:=FloatToStr(s); end; В приведенной процедуре перебираются все записи набора данных Table1, при этом в переменной s накапливается сумма значений, содержащихся в поле salary. Перебор записей осуществляется с помощью метода Next, вызываемого в цикле. Предварительно с помощью метода First указатель устанавливается на первую запись. После выполнения кода указатель будет установлен на последнюю запись.
Задание 1. Выполните подсчет количества сотрудников заданного отдела. Название отдела пусть запрашивается в поле Edit1 или с помощью функции Input. Результат вычисления пусть выводится в метке.
|