Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatika-otvety (2).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
493.88 Кб
Скачать
  1. Способы фильтрации

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

Хочу рассказать о нескольких полезных способах фильтрации данных, которые можно применить, чтобы достигнуть эффекта отсеивания данных, по мере ввода искомой строки. На пример в таблице есть столбец "Фамилия", пользователь вводит в поле поиска последовательно буковки и данные фильтруются(отсеиваются) - пользователь ввел первую буковку и выводятся все фамилии, начинающиеся с первой буквы, потом только те которые начинаются с первой и второй и т.д. пока не найдет , что то полезное или вообще ничего не найдет. Т.е. фильтрация происходит не по полному совпадению, а по части введенной пользователем строки. Так же будут приведены способы фильтрации по нескольким полям.

Немного теории.

Основное преимущество фильтров по сравнению с поиском состоит в том, что применять фильтр можно без всяких подготовительных действий над набором данных, так как фильтры не используют индексы. Один минус - фильтрация выполняется медленнее чем поиск основанный на индексах. Есть два варианта с помощью которых можно задать условие на фильтрацию. Можно использовать их по отдельности или оба сразу. Первый - строковое значение в свойстве Filter. Второй - это условие описанное в обработчике события OnFilterRecord. Начинается фильтрация как только свойство Filtered, установлено в True.

Свойство Filter.

Сначала опишу возможности которые предоставляет свойство Filter, а во второй части главы будет рассказано как можно использовать событие OnFilterRecord. Именно свойство Filter нужно использовать в первую очередь, т.к. это дает значительный выигрыш в производительности при обработке больших по объему наборов данных (по сравнению с событием OnFilterRecord). Особенно это заметно при большом количестве записей в таблице (~свыше 100.000), ну и конечно многое зависит от мощности машины. При малом объеме обрабатываемых данных, разница в скорости не заметна. Ну что ж приступим. Допустим, есть таблица с полями Фамилия, Имя, Отчество. Нужно фильтровать данные по одному из полей (на выбор), т.е. пользователь должен иметь возможность выбрать по какому из полей фильтровать данные. Для тех кто в танке термины "поле" и "столбец" - обозначают одно и тоже. Задача стоит такая отсеивать данные по мере ввода искомой строки в Edit. Кидаем на форму компоненты Combobox и Edit. Combobox будет использоваться для выбора столбца, а в Edit будет вводится искомое слово. Заполняем свойство Items в Combobox именами столбцов. Ставим свойство Style у Combobox равным csDropDownList (чтоб что попало не вводили). Затем в обработчике события Edit1Change пишем следующее:  

procedure TForm1.Edit1Change(Sender: TObject); begin if Length(Edit1.Text) > 0 then begin ADOTable1.Filtered:=false; ADOTable1.Filter:=Combobox1.Text + ' LIKE ' + #39 + Edit1.Text + '%' + #39; ADOTable1.Filtered:=true; end else ADOTable1.Filtered:=false; end;.

  1. Создание и обработка набора данных нескольких таблиц

В качестве среды программирования для рассмотрения технологии создания приложений баз данных в данном разделе выбрана объектно-ориентированная среда программирования Delphi, которая на сегодня является одной из самых распространенных средств создания приложений баз данных для корпоративных применений. Простота и естественность языка, ориентация системы на разработку именно такого рода приложений, наконец, эффективность (большая производительность и относительно небольшие размеры) создаваемых с ее помощью программ сделали Delphi незаменимым средством разработки различного рода клиентских мест, т.е. программ для доступа к БД.

Таблицы БД располагаются на диске. Они являются физическими объектами. Для операций с данными, содержащимися в таблицах, используются наборы данных.

В терминах системы Delphi набор данных – это совокупность записей, взятых из одной или нескольких таблиц баз данных. Записи, включаемые в набор, данных отбираются по определенным правилам. Набор данных является логической таблицей, с которой можно работать при выполнении приложения. Взаимодействие таблицы и набора данных напоминает взаимодействие физического файла и файловой переменной. Для выполнения операций с наборами данных используются два способа досту­па к данным: навигационный и реляционный.

Навигационный способ доступа заключается в обработке каждой отдельной за­писи набора данных. Этот способ обычно используется в локальных БД или в удаленных БД небольшого размера. При навигационном способе доступа каждый набор данных имеет невидимый указатель текущей записи. Указатель определя­ет запись, с которой могут выполняться такие операции, как редактирование или удаление. Поля текущей записи доступны для просмотра. Например, ком­поненты DBEdit и DBText; отображают содержимое соответствующих полей именно текущей записи. Компонент DBGrid указывает текущую запись с помо­щью специального маркера.

Реляционный способ доступа основан на обработке группы записей. Если требу­ется обработать одну запись, все равно обрабатывается группа, состоящая из одной записи. При реляционном способе доступа используются SQL-запросы, поэтому его называют также SQL-ориентированным. Реляционный способ досту­па ориентирован на работу с удаленными БД и является для них предпочти­тельным. Однако его можно использовать и для локальных БД.

Реляционный способ доступа к данным в приложении можно реализовать с по­мощью компонента Query.

Средства для работы с реляционными базами данных.Хотя система Delphi не имеет своего формата таблиц БД, она тем не менее обеспечивает мощную поддержку большого количества различных СУБД — как локальных (например, dBase или Paradox), так и промышленных (например, Sybase или InterBase). Средства Delphi, предназначенные для работы с БД, мож­но разделить на два вида:

инструменты

компоненты

К инструментам относятся специальные программы и пакеты, обеспечивающие обслуживание БД вне разрабатываемых приложений. Компоненты предназначены для создания приложений, осуществляющих опера­ции с БД.

Напомним, что в Delphi имеется окно Обозревателя дерева объектов, которое отображает иерархическую структуру объектов текущей формы. При разработке приложений баз данных это окно удобно использовать для просмотра структуры базы данных и изменения связей между компонентами. Кроме того, в окне Ре­дактора кода имеется вкладка Diagramслужащая для отображения и настройки взаимосвязей между элементами баз данных.

Технология создания информационной системы.Продемонстрируем возможности Delphi по работе с БД на примере создания простой информационной системы. Эту информационную систему можно раз­работать даже без написания кода: все необходимые операции выполняются с помощью программы Database Desktop, Конструктора формы и Инспектора объектов. Работа над информационной системой состоит из следующих основ­ных этапов:

создание БД;

создание приложения.

Кроме приложения и БД, в информационную систему также входят вычисли­тельная система и СУБД. Предположим, что компьютер или компьютерная сеть уже существуют, и их характеристики удовлетворяют потребностям будущей информационной системы. В качестве СУБД выберем Delphi.

В простейшем случае БД состоит из одной таблицы. Если таблицы уже имеются, то первый этап не выполняется. Отметим, что совместно с Delphi. поставляется большое количество примеров приложений, в том числе и приложений БД. Готовые таблицы также можно использовать для своих приложений.

Для работы с таблицами БД при проектировании приложения удобно использо­вать программу Database Desktop, которая позволяет:

создавать таблицы;

изменять структуры;

редактировать записи.

Кроме того, с помощью Database Desktop можно выполнять и другие действия над БД (создание, редактирование и выполнение визуальных и SQL-запросов, операций с псевдонимами).

Для примера рассмотрим создание приложения, использующего механизм дос­тупа ВDЕ и позволяющего перемещаться по записям таблицы БД, просматри­вать и редактировать поля, удалять записи из таблицы, а также вставлять новые. Файл проекта приложения обычно не требует от разработчика выполнения ка­ких-либо действий. Поэтому при создании приложения главной задачей является конструирование форм, в простейшем случае — одной формы.

Компонент Table обеспечивает взаимодействие с таблицей БД. Для связи с требуемой таблицей нужно установить в соответствующие значения свойство DataBaseName, указывающее путь к БД, и свойство TableName, указывающее имя таблицы. После задания таблицы для открытия набора данных свойство Active должно быть установлено в значение True.

В рассматриваемом приложении использована таблица клиентов, входящая в состав поставляемых с Delphi примеров, ее главный файл – Clients.dbf Файлы этой и других таблиц примеров находятся в каталоге, путь к которому указывает псевдоним dbdemos. Настройка псевдонима может быть выполнена с помощью программы BDE Administrator.

Компонент DataSourse1 является промежуточным звеном между компонентом Table, соединенным с реальной таблицей БД, и визуальными компонентами DBGrid и DBNavigator, с помощью которых пользователь взаимодействует с этой таблицей. На компонент Table1, с которым связан компонент DataSourse1, указывает свойство DataSet последнего.

Компонент DBGrid1 отображает содержимое таблицы БД в виде сетки, в кото­рой столбцы соответствуют полям, а строки — записям таблицы. По умолчанию пользователь может просматривать и редактировать данные. Компонент DBNavigator1 позволяет пользователю перемещаться по таблице, редактировать, вставлять и удалять записи. Компоненты DBGrid1 и DBNavigator1 связываются со своим источником данных -компонентом DataSourse1 через свойства DataSourse. Взаимосвязь компонентов приложения и таблицы БД и используемые при этом свойства компонентов показаны на рис. 3.

Разрабатывая приложение, можно задавать значения всех свойств компонентов с помощью Инспектора объектов. При этом требуемые значения либо непо­средственно вводятся в поле, либо выбираются в раскрывающихся списках. В последнем случае приложение создается с помощью мыши и не требует набо­ра каких-либо символов на клавиатуре. В табл. 12 приведены компоненты, используемые для работы с таблицей БД, их основные свойства и значения этих свойств.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]