Презентация, доклад на тему Базы данных в Delphi. Сортировка и фильтрация набора данных. Поиск записей

Содержание

Поиск записейПоиск записи, удовлетворяющей определенным условиям, означает переход на эту запись.Для поиска записей используют методLocate ( KeyField, KeyValues, Options ):Boolean который ищет запись с заданными значениями полей.Указатель устанавливается на первую встреченную запись, удовлетворяющую условию поиска.Если запись

Слайд 1Тема: Поиск записей. Сортировка и фильтрация записей в наборе данных

Тема:   Поиск записей. Сортировка и фильтрация записей в наборе данных

Слайд 2Поиск записей
Поиск записи, удовлетворяющей определенным условиям, означает переход на эту запись.
Для

поиска записей используют метод

Locate ( KeyField, KeyValues, Options ):Boolean

который ищет запись с заданными значениями полей.
Указатель устанавливается на первую встреченную запись, удовлетворяющую условию поиска.
Если запись найдена, то Locate=true, если нет, то Locate=false.
В параметре KeyField указывается список полей (через ;), по которым ведется поиск;
KeyValues – указывается значение полей для поиска;
Поиск записейПоиск записи, удовлетворяющей определенным условиям, означает переход на эту запись.Для поиска записей используют методLocate ( KeyField,

Слайд 3Options – задает значения, которые обычно используются для поиска строк.
Параметр

Options может принимать комбинацию значений:
loCaseInsensitive – регистр букв не учитывается (Петров=ПеТрОв=петров= …);
loPartialKey – допускается частичное совпадение значений (петров=п=петр=…).
Значения записываются в [].
Пример.
adotable1.Locate ( ‘Kod’, 123, []);
– в результате выполнения оператора указатель записи установится на запись, у которой в поле Kod равно числу123.
Options – задает значения, которые обычно используются для поиска строк. Параметр Options может принимать комбинацию значений:loCaseInsensitive –

Слайд 4Поиск записей по нескольким полям
В методе Locate параметр KeyValues является массивом

Variant, в котором содержится несколько значений.
Функция VarArrayOf – приводит к типу вариантного массива.
Значения функции разделяются « , » и заключаются в []; порядок значений соответствует порядку полей параметра KeyField.
Пример
adotable1.Locate ( ‘Tovar;Kolvo’,
Vararrayof (['Шоколад', '150‘]), [ ] );
Поиск записей по нескольким полямВ методе Locate параметр KeyValues является массивом Variant, в котором содержится несколько значений.Функция

Слайд 5Индексирование баз данных
В таблицах могут определяться ключи и индексы. Ключ –

это комбинация полей, данные в которых однозначно определяют каждую запись в таблице. Простой ключ состоит из одного поля, составной из нескольких полей. Поля, по которым построен ключ, называют ключевыми.
Индекс, как и ключ, строится по полям таблицы, однако, он может допускать повторение значений составляющих его полей.
Установка ключей и создание индексов выполняется в процессе разработки структур таблиц базы данных.
В НД adoTable указание текущего индекса возможно с помощью свойства IndexFieldNames, которое содержит имя поля, для которого был создан индекс.
Например,
adoTable1.IndexFieldNames:='Tovar';

Индексирование баз данныхВ таблицах могут определяться ключи и индексы. Ключ – это комбинация полей, данные в которых

Слайд 6Сортировка набора данных


Сортировка – это упорядочивание записей по полю или группе

полей в порядке убывания или возрастания содержащихся в них значений.
Сортировка НД adoTable выполняется автоматически по текущему индексу. При смене индекса происходит автоматическое переупорядочивание записей.
Есть возможность сортировки данных и по неиндексированным полям.
Для этого используется свойство НД свойство Sort.

Сортировка набора данныхСортировка – это упорядочивание записей по полю или группе полей в порядке убывания или возрастания

Слайд 7
Для сортировки в свойство Sort помещают список полей сортировки, разделенных запятыми.


Каждое поле может дополнительно снабжаться признаками ascending (ASC) или descending (DESC) для указания соответственно восходящего или нисходящего порядка сортировки.
Если ни одно из этих слов не указано, реализуется восходящая сортировка.
Пример:
 
ADOtablel.Sort := 'Name ASC, Date DESC’;

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

Слайд 8Фильтрация записей

Фильтрация – это задание ограничений для записей, отбираемых в набор

данных.

Состав записей в НД в данный момент зависит от установленных ограничений, в том числе и от фильтров.

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

Фильтрация записейФильтрация – это задание ограничений для записей, отбираемых в набор данных. Состав записей в НД в

Слайд 9Свойство Filter типа Srting компонента adoTable – задает выражение фильтра.
В

его состав могут входить элементы:
имена полей таблиц;
литералы – значение, заданное явно (число, строка или символ). В выражение фильтра включаются только выражения строкового типа.
операции сравнения (<, >, =, >=, <=, <>);
арифметические операции (+, -, *, /);
логические операции (and, or, not);
( ) и [ ] скобки.

Свойство Filter типа Srting компонента adoTable – задает выражение фильтра. В его состав могут входить элементы:имена полей

Слайд 10Если имя поля содержит пробелы, то его заключают в [ ]

(например, [Name Firma] = 'Слад&Ко'), в противном случае [ ] необязательны.
Нельзя использовать в выражении фильтра имена переменных. Если в выражение фильтра требуется включить значение переменной или свойство какого-нибудь компонента, то это значение должно быть преобразовано в строковый тип.
Для того чтобы вставить в выражение апостроф, удобнее пользоваться обращением по коду, зная что код апострофа в кодовой таблице равен 39 (в программе#39).
Например,
ADOTable1.Filter:=' Tovar = '+#39+'Макароны'+#39;
ADOTable1.Filter:=' Tovar = '+#39+ edit1.text +#39;
ADOTable1.Filter:= ' Cena >=150 and Cena <= 500';
ADOtable1.Filter:= ' [количество товара] < 100';
ADOtable1.Filter:='[количество товара]< '+#39+edit1.text+#39;

Если имя поля содержит пробелы, то его заключают в [ ] (например, [Name Firma] = 'Слад&Ко'), в

Слайд 11Для активизации и деактивизации фильтра используется свойство Filtered типа Boolean.
Если

Filtered=True, то фильтрация включается, и НД отбираются записи, которые удовлетворяют фильтру, записанному в свойстве Filter.
Если Filtered=False (по умолчанию), то фильтрация выключена.
Например:
ADOTable1.Filter:='[ФАМИЛИЯ] LIKE '+#39+Edit1.Text +'%'+ #39;
{теперь включаем фильтр}
ADOtable1.Filtered:=true;

Для активизации и деактивизации фильтра используется свойство Filtered типа Boolean. Если Filtered=True, то фильтрация включается, и НД

Слайд 12Разберем строку фильтра:
'[ФАМИЛИЯ] LIKE '+#39+Edit1.Text +'%'+ #39;
Оно означает следующее - выбрать

те записи из столбца 'ФАМИЛИЯ', которые начинаются с тех же символов, что и набраны в Edit1.Text. Особое внимание обратите на пробелы - "потеряете" пробел - не будет работать.

Ключевое слово LIKE позволяет по заданному шаблону сравнивать строки. При этом нужно знать следующее: 
символ '%' (процент) – заменяет любую последовательность из символов. 
Знак #39 - означает номер символа ' (одинарная кавычка) в кодовой таблице ASCII.

Разберем строку фильтра:'[ФАМИЛИЯ] LIKE '+#39+Edit1.Text +'%'+ #39;Оно означает следующее - выбрать те записи из столбца 'ФАМИЛИЯ', которые

Слайд 13Конструкция 
#39 + Edit1.Text + '%' + #39 
идентична 
'''' + Edit1.Text + '%'

+ ''''
Можно также использовать спец. функцию QuotedStr, которая возвращает строку окаймленную одинарными кавычками. 
Примеры одинаковых фильтров в разных формах записи:
 ADOTable1.Filter:='ФАМИЛИЯ LIKE '+ '''' + Edit1.Text + '%' + ''''; 

ADOTable1.Filter:='ФАМИЛИЯ LIKE '+ QuotedStr(edit1.Text+ '%'); 

ADOTable1.Filter:='ФАМИЛИЯ LIKE '+ #39 + Edit1.Text + '%' + #39; 
Конструкция #39 + Edit1.Text + '%' + #39 идентична '''' + Edit1.Text + '%' + '''' Можно также использовать спец.

Слайд 14Если, например, нужно искать любое вхождение искомой строки в записях, а не начиная

с первого символа, то строка фильтра выглядела бы следующим образом:
 ADOTable1.Filter:='ФАМИЛИЯ LIKE ' + #39 + '%' + Edit1.Text + '%' + #39; 
 Часто нужно фильтровать по нескольким столбцам, например по Фамилии, Имени и Отчеству. Это можно сделать так:
 
procedure TForm1.Button1Click(Sender: TObject);
begin 
ADOTable1.Filtered:=false;
ADOTable1.Filter:='ФАМИЛИЯ LIKE ‘
+ #39 + Edit1.Text + '%' + #39 +' AND '
+ 'ИМЯ LIKE '+ #39 + Edit2.Text + '%' + #39
+ ' AND ' + 'ОТЧЕСТВО LIKE ' + #39 + Edit3.Text +
'%' + #39; 
ADOTable1.Filtered:=true; 
end; 

Если, например, нужно искать любое вхождение искомой строки в записях, а не начиная с первого символа, то строка фильтра

Слайд 15Строка фильтра работает, но только в том случае, если данные введены во

все три поля. Если одно из полей ввода(Edit) пустое - вылетает ошибка "Аргументы имеют неверный тип". 
Чтобы избежать этой ошибки, код может быть записан в виде:
  var filtr, // формируемая строка фильтра
add: string;  //название логической операций begin 
ADOTable1.filtered:=false;
filtr:=''; 
if length(edit1.text) > 0 then  filtr:= 'ФАМИЛИЯ LIKE '+ #39 + Edit1.Text + '%' + #39;
if length(edit2.text) > 0 then  begin  if length(filtr) > 0 then add:= ' and ' else add:='';  filtr:=filtr + add + 'ИМЯ LIKE '+ #39 + Edit2.Text + '%' + #39;  end;

Слайд 16  if length(edit3.text) > 0 then  begin  if length(filtr) > 0 then add:= '

and ' else add:='';  filtr:=filtr + add + 'ОТЧЕСТВО LIKE '+ #39 + Edit3.Text + '%' + #39;  end;  if length(filtr) > 0 then  begin  ADOTable1.Filter:= filtr;  ADOTable1.filtered:=true;  end  else Showmessage('Все поля пусты!');  end;

Т.е., нужно провести проверку, пустое поле ввода или нет, а затем уже формировать строку фильтра. Причем начиная со второго поля ввода нужно проверять и строку фильтра. Это нужно для последующего правильного формирования строки фильтра.

  if length(edit3.text) > 0 then  	begin  		if length(filtr) > 0 then add:= ' and ' 			else

Что такое shareslide.ru?

Это сайт презентаций, где можно хранить и обмениваться своими презентациями, докладами, проектами, шаблонами в формате PowerPoint с другими пользователями. Мы помогаем школьникам, студентам, учителям, преподавателям хранить и обмениваться учебными материалами.


Для правообладателей

Яндекс.Метрика

Обратная связь

Email: Нажмите что бы посмотреть