![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Поиск и Фильтрация данных
· Поиск записей методом Locate Метод Locate ищет первую запись, удовлетворяющую критерию поиска, и если такая запись найдена, делает ее текущей. В этом случае в качестве результата возвращается значение True. Если запись не найдена, возвращается значение False и курсор не меняет своего положения.
· Откройте проект Delphi, созданный при выполнении практической работы «Создание объектов полей». · Разместите на форме компонент SpinEdit (вкладка Samples) · Компонент DBGrid свяжите с источником данных. · Для компонента SpinEdit напишите обработчик события onChange: при изменении значения SpinEdit курсор должен быть установлен на запись с соответствующим номером накладной. Используйте метод Locate if not DM.Nakls.Locate('Naklid', SpinEdit1.Value, []) then ShowMessage('Нет накладных с указанным номером'); DBGrid1.SetFocus · Проверьте работу программы. · Сохраните проект · Поиск записей с использованием метода Lookup Метод Lookup находит запись, удовлетворяющую условию поиска, но не делает ее текущей, а возвращает значения некоторых ее полей. Независимо от результата поиска записи указатель текущей записи в НД не изменяется. В отличие от метода Locate, метод Lookup осуществляетпоиск только на точное соответствие критерию поиска значения поля поиска записи.
Пример процедуры: procedure TfmNakl.Button1Click(Sender: TObject); var LookupResult: Variant; begin LookupResult: = DM.Nakls.Lookup('NaklID', seNaklID.Value, 'NDate; Firm; NSum; NPayedSum'); if VarType(LookupResult)=varNull then ShowMessage('Нет накладной с номером '+IntToStr(seNaklID.Value)) else if VarType(LookupResult)=varEmpty then ShowMessage('Поиск не проведен') else if VarIsArray(LookupResult) then begin stDate.Caption: = LookupResult[0]; stName.Caption: = LookupResult[1]; stSum.Caption: = LookupResult[2]; stPayed.Caption: = LookupResult[3]; end else stDate.Caption: = LookupResult end;
· Фильтрация записей Свойство Filter задает критерий фильтрации. В этом случае НД будет отфильтрован, как только в его свойство Filtered будет помещено значение True. Синтаксис описания критерия похож на синтаксис секции WHERE SQL-запроса с тем исключением, что имена переменных программы указывать нельзя, можно указывать имена полей и литералы (явно заданные значения); допускается использовать обычные операции отношения и логические операции AND, NOT и OR, например: q Откройте проект, выполненный в первой части практической работы. q Добавьте на форму компонент Edit и кнопку. q Напишите для кнопки обработчик события onClick if Edit1.Text< > '' then with Nakls do begin Filter: = Edit1.Text; Filtered: = True end q Запустите программу. q В поле для ввода текста напишите условия фильтрации: q NaklID=5 q При нажатии на кнопку в сетке должны отображаться записи, соответствующие поставленному условию. q Поменяйте условия фильтрации: 39. Задайте фильтр, отображающий записи за 17 марта 2000 года. 40. Измените условие фильтрации. Выдайте список накладных за март 41. Выберите все накладные, сумма по которым больше 5000 руб. 42. Выберите только оплаченные накладные 43. Выберите накладные с типом «Поставка на реализацию» · Сортировка с использованием индексов 40. Убедитесь, что в таблице Books индексными полями являются поля BName, BYear, BPublish, BAuthor. 41. Если какие-то из этих полей не проиндексированы, создайте для них индекс. Для создания индекса используется оператор CREATE INDEX следующего формата: CREATE [UNIQUE] {[ASC[ENDING] | DESC[ENDING]} INDEX < Имя_индекса> ON < Имя таблицы> (< Столбец1> [, < Столбец2> [, •••]]) Здесь: UNIQUE — создается уникальный индекс; ASC [ENDING] — значения индекса сортируются по возрастанию (спецификатор по умолчанию); 103. DESC [ENDING] — значения сортируются по убыванию; 104. < Имя_индекса> — имя индекса (должно быть уникальным среди всех остальных имен индексов в БД); 105. < Имя_таблицы> — имя таблицы, для которой создается индекс; 106. < СтолбецN> — имя входящего в индекс столбца. 42. Создайте приложение Delphi. 43. Выполните пункты 2-3 первой части 44. Компонент IBTable свяжите с базой данных, для свойства TableName установите значение Books 45. Откройте набор данных 46. Свяжите источник данных с таблицей. 47. Разместите на форме компонент DBGrid. 48. Компонент DBGri свяжите с источником данных. 49. Поместите на форму компонент RadioGroup 50. В свойство Items этого компонента добавьте строки с именами проиндексированных столбцов (указаны в пункте 1) 51. Напишите для компонента RadioGroup обработчик события onClick IbTable1.Close; IbTable1.IndexFieldNames: =radiogroup1.Items.Strings[radiogroup1.ItemIndex]; IbTable1.Open 52. Запустите программу. 53. Убедитесь, что при переключении радиокнопок изменяется поле сортировки в таблице. 54. Подготовьте отчет по выполненной практической работе, в который включите:
Наименование дисциплины: Разработка и эксплуатация удаленных баз данных Тема (раздел) учебной программы: Проектирование клиентской части приложения БД. Фильтрация данных: в базе данных и в выборках
|