Рассмотрим, как фильтровать записи в таблице базы данных  и индексировать их. Фильтровка записей таблицы это эквивалент SQL запросам. Фильтровка нужна, для того чтобы показать пользователю меньше записей согласно определённому условию (например: показать только тех студентов группы у кого день рождения в мае или в январе и т.д.). Фильтрацию в Delphi также можно использовать как поиск какой то записи в таблице. На практике в большинстве случаев SQL запросы используются именно в таких случаях, какой описан в примере.
Фильтр задается, как строка и её определяет свойство Filter, а активность фильтра определяет свойство Filtered, соответственно если оно True то записи фильтруются. Фильтр задаётся согласно всем правилам программирования Delphi, к которым вы привыкли.
Рассмотрим  функции фильтра:

  1. Арифметические и логические функции и операторы сравнения
    Примеры:
    a. Population < 110;
    b. Vozrast > 25 and Rost < 175;
    c. Stoimost >150 or Razmer <250;
    d. Town <> Moskva
    e. Ves + Rost > 200;
    f. Vozrast/Ves > 9;
  2. Выполнение операций над строками
    Примеры
    a. Last_Name = 'Сидоров';
    b. First_Name+Last_Name = 'ЕгорСидоров ';
    c. Substring(Last_Name,1,2)= 'Cи';
  3.  Также функции даты и времени
    Примеры
    a. Year(Birth_Day) = 2011;
    b. Day(Birth_Day) = 10;
  4. Используются также операторы Like и In.

Все возможности фильтрации полностью документированы в файле справки Delphi в разделе Developing Database Applications > Using client datasets > Limiting what records appear.
Индексацию определяет свойство IndexFieldNames. Для того чтобы упорядочить по возрастанию таблицу по полю Vozrast нужно присвоить свойству IndexFieldNames значение 'Vozrast'. Очень часто индексация нужна тогда, когда пользователь щёлкает на заголовках столбцов компонента DBGrid.
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
ClientDataSet1.IndexFieldNames:=Column.FieldName;
end;
Также индексы можно создать с помощью свойства IndexDefs. Их можно создать как во время выполнения, так и в стадии создания базы данных. Во время выполнения delphi приложения, для того чтобы создать индекс нужно вызвать метод Add свойства IndexDefs. Первый параметр - это имя индекса, второй - имя поля (или полей), третий - опции. Теперь для того чтобы упорядочить таблицу по полю нужно присвоить свойству IndexName имя нужного индекса. Данный метод лучше, чем предыдущий, так как можно быстро переключаться между созданными заранее индексами. Для того чтобы изменить индексы нужно воспользоваться свойством Items свойства IndexDefs, указав порядковый номер индекса. Получить порядковый номер индекса можно через метод свойства IndexDefs IndexOf , указав имя индекса. Например:
var
i:integer;
begin
…..
i:=ClientDataSet1.IndexDefs.IndexOf('i4');
ClientDataSet1.IndexDefs.Items[i].Fields:='Birth_Day';

Скачать исходник база данных в Delphi »:

 

Добавить комментарий


Защитный код
Обновить