Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Поиск и Фильтрация данных






· Поиск записей методом 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 осуществляетпоиск только на точное соответствие крите­рию поиска значения поля поиска записи.

  1. Создайте новый проект в Delphi.
  2. Создайте модуль данных, куда поместите компоненты для связи с БД IB_BIBL.gdb, а также компоненты – наборы данных и компоненты – источники данных для таблиц Nakls и Firms.
  3. С помощью редактора полей для компонента Nakls создайте подстановочное поле Firm для поиска наименования фирмы по ее номеру.
  4. Разместите на форме один компонент SpinEdit, четыре компонента StaticText, четыре текстовых метки, одну кнопку, как показано на рисунке.

  1. Для кнопки «Искать» напишите обработчик события onClick, который осуществляет поиск в наборе данных с помощью метода LookUp и присваивает компонентам StaticText соответствующие значения полей набора данных. Если накладной с указанным номером не существует, выдайте соответствующее сообщение.

Пример процедуры:

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;

  1. Проверьте работу программы

· Фильтрация записей

Свойство 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. Подготовьте отчет по выполненной практической работе, в который включите:

  1. Название практической работы
  2. ФИО студента, № группы
  3. Различия в использовании методов Locate, Lookup
  4. Команды создания индексов для таблицы Books
  5. Описание способа переключения индексов во время работы приложения.

Наименование дисциплины: Разработка и эксплуатация удаленных баз данных

Тема (раздел) учебной программы: Проектирование клиентской части приложения БД. Фильтрация данных: в базе данных и в выборках

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.