- •Базы данных в Delphi Оглавление
- •Глава I. Базы данных в Delphi 3
- •Глава II. Наборы данных 11
- •Глава I. Базы данных в Delphi
- •1.1. Ведение в базы данных
- •1.2. Таблицы баз данных.
- •1.3. Таблицы формата dBase и Paradox
- •Сравнительная характеристика dBase и Paradox
- •1.4. Практическая работа
- •1.5. Самостоятельная работа
- •Глава II. Наборы данных
- •2.1. Набор данных
- •2.2. Практическая работа
- •2.3. Самостоятельная работа
- •2.4. Режимы наборов данных
- •2.5. Практическая работа
- •2.6. Перемещение по записям набора данных
- •2.7. Практическая работа
- •2.8. Доступ к полям
- •2.9. Практическая работа
- •2.10. Практическая работа
- •2.11. Способы задания состава полей набора данных
- •Редактор полей
- •2.12. Вычисляемые поля
- •2.13. Практическая работа №7
- •Глава III. Индексирование баз данных
- •3.1. Установка текущего индекса
- •3.2. Сортировка набора данных
- •3.3. Практическая работа
- •Глава IV. Фильтрация записей
- •4.1. Фильтрация по выражению
- •4.2. Практическая работа
- •4.3. Практическая работа
- •4.4. Фильтрация по диапазону
- •4.5. Самостоятельная работа
- •Глава V. Поиск записей в наборе данных.
- •5.1. Поиск записей
- •5.2. Поиск записей по нескольким полям.
- •5.3. Практическая работа
- •Глава VI. Модификация набора данных
- •6.1. Редактирование записей
- •6.2. Добавление записей
- •6.3. Удаление записей
- •6.4. Практическая работа
- •Глава VII. Работа со связанными таблицами
- •7.1. Организация связей между таблицами
- •7.2. Практическая работа
- •7.3. Самостоятельная работа
- •Глава VIII. Работа с отчетами
- •8.1. Объект QuickRep
- •8.2. Компоненты, размещаемые в полосе
- •8.3. Практическая работа
3.1. Установка текущего индекса
В НД Table возможно указание текущего индекса. Его можно установить двумя способами:
С помощью свойства IndexName : String – содержит имя индекса, заданное при его создании (Например, Table1.IndexName:='indTovar';).
С помощью свойства IndexFieldNames : String – содержит имя поля, для которого был создан индекс (Например, Table1.IndexFieldNames:='Tovar';).
Эти свойства являются взаимоисключающими, и установка значения одного из них приводит к автоматической очистке значения другого.
3.2. Сортировка набора данных
Порядок расположения записей в НД может быть неопределенным. По умолчанию записи не отсортированы.
С отсортированными записями НД работать более удобно. Сортировка – это упорядочивание записей по полю или группе полей в порядке убывания или возрастания содержащихся в них значений.
Сортировка НД Table выполняется автоматически по текущему индексу. При смене индекса происходит автоматическое переупорядочивание записей. Таким образом, сортировка возможна по полям, для которых создан индекс.
3.3. Практическая работа
Отсортировать записи набора данных Table1 для таблицы Tovar.db по полям Tovar, Kod, DataVipusk, Kolvo, Cena.
Расположите на форме компоненты в соответствии с рисунком:
Проиндексируйте таблицу Tovar.db по полям Tovar, Kod, DataVipusk, Kolvo, Cena. Создайте простые индексы и назовите их соответственно indTovar, indKod, indDV, indKolvo, indCena.
Для кнопки «Отсортировать» напишите следующий обработчик события OnClick:
procedure TForm1.Button1Click(Sender: TObject);
begin
case RadioGroup1.ItemIndex of
0: Table1.IndexName:= 'indTovar';
1: Table1.IndexName:= 'indKod';
2: Table1.IndexName:= 'indDV';
3: Table1.IndexName:= 'indKolvo';
4: Table1.IndexName:= 'indCena';
end;
end;
Для кнопки «Отменить сортировку» напишите обработчик события OnClick:
procedure TForm1.Button1Click(Sender: TObject);
begin
Table1.IndexName:= '';
end;
Запустите программу и выберите один из зависимых переключателей в группе. Обратите внимание, в каком порядке теперь находятся записи таблицы.
Глава IV. Фильтрация записей
Фильтрация – это задание ограничений для записей, отбираемых в набор данных. Состав записей в НД в данный момент зависит от установленных ограничений, в том числе и от фильтров.
Система Delphi дает возможность осуществлять фильтрации записей:
по выражению;
по диапазону.
По умолчанию фильтрация записей не ведется, и НД Table содержит все записи связанной с ним таблицы БД.
4.1. Фильтрация по выражению
При использовании фильтрации по выражению набор данных ограничивается записями, удовлетворяющими выражению фильтра, задающему условия отбора записей.
Достоинством фильтрации по выражению состоит в том, что она применима к любым полям, в том числе к неиндексированным. Так как в процессе отбора просматриваются все записи таблицы, фильтрация по выражению эффективна при небольшом количестве записей.
Свойство Filter типа Srting компонента Table – задает выражение фильтра. В его состав могут входить элементы:
имена полей таблиц;
литералы – значение, заданное явно (число, строка или символ). В выражение фильтра включаются только выражения строкового типа.
операции сравнения (<, >, =, >=, <=, <>);
арифметические операции (+, -, *, /);
логические операции (and (логическое умножение), or (логическое сложение), not (логическое отрицание));
( ) и [ ] скобки.
Пример:
Tovar = 'Макароны'
Cena >=150 or Cena <= 500
Если имя поля содержит пробелы, то его заключают в [ ] (например, [Name Firma] = 'Слад&Ко'), в противном случае [ ] необязательны.
Нельзя использовать в выражении фильтра имена переменных. Если в выражение фильтра требуется включить значение переменной или свойство какого-нибудь компонента, то это значение должно быть преобразовано в строковый тип.
Для активизации и деактивизации фильтра используется свойство Filtered типа Boolean. Если Filtered=True, то фильтрация включается, и НД отбираются записи, которые удовлетворяют фильтру, записанному в свойстве Filter. Если Filtered=False (по умолчанию), то фильтрация выключена.
Свойство FilterOptions типа TFilterOptions задает параметры фильтрации. Может принимать комбинации двух значений:
foCaseInsensitive – регистр букв не учитывается, т. е. при задании фильтра Tovar='Хлеб' слова "Хлеб", "хЛеБ", "ХЛЕБ" или "хлеб" будут восприняты как одинаковые;
foNoPartialCompare – выполняется проверка на полное соответствие содержимого поля и значения, заданного для поиска. Обычно применяется для строк. Если известны только первые символы строки, то нужно указать их в выражении фильтра, заменив остальные символом «*» и выключив значение foNoPartialCompare. Например, при выключенном значении foNoPartialCompare для фильтра Tovar = 'C*' будут отобраны записи, у которых в поле Tovar содержатся значения "Сметана", "Сыр", "Сахар" или "Сельдь с/м".
Все параметры фильтра перечисляются в свойстве FilterOptions через «,» и заключаются в [ ]. По умолчанию все параметры фильтра выключены, т.е. свойство FilterOptions = [ ].
