Использование Delphi для создания приложений баз данных. Устюгова В.Н. - 39 стр.

UptoLike

Составители: 

39
Пусть в Edit1 введено 12 и в Edit2 - 4. Тогда указатель переместится на запись, у которой
значение NumGr равно 12 и значение поля NN равно 4:
NumGr NN Tovar
1 10 Макароны
12 1 Вода минеральная
12 4 Кефир // Перемещение указателя текущей записи
12 26 Груши
100 1 Конфеты «Ласточка»
100 10 Крупа гречневая
Для точного поиска в Delphi имеется группа методов SetKey, EditKey, GotoKey,
которые должны выполняться вместе, и которые по функциональности аналогичны методу
FindKey. Использование их менее удобно: сначала набор данных переводится в состояние
dsSetKey (методом SetKey или, если он уже применялся для данного индекса, EditKey),
затем присваиваются поисковые значения полям и выполняется метод GotoKey. После
этого набор данных переходит в состояние dsBrowse. Результат выполнения аналогичен
результату, возвращаемому методом FindKey. Например, код
if not Table2.FindKey([GrTmp,NNTmp]) then
ShowMessage('Нет товара с такой группой и номером!');
эквивалентен более громоздкому коду с применением GotoKey:
Table2.SetKey; Table2NumGr.Value := GrTmp;
Table2NN.Value := NNTmp;
if not Table2.GotoKey then
ShowMessage('Нет товара с такой группой и номером!');
1. . Используя таблицы из базы данных DBDEMOS создать приложение, в
котором организовать точный поиск записей наборах данных по индексированным
полям с использованием методов FindKey, SetKey, EditKey, GotoKey (индекс по
одному полю, индекс по нескольким полям).
Неточный поиск
Неточный поиск (поиск на неточное, приблизительное соответствие) осуществляется
методом FindNearest. Он пытается отыскать в наборе данных запись, у которой индексные
поля соответствуют указанным значениям. Если такая запись найдена, указатель текущей
записи в наборе данных перемещается на нее или на следующую за ней запись, в
зависимости от значения свойства KeyExclusive. Если KeyExclusive = False (по умолчанию),
указатель текущей записи перемещается на нее. Если KeyExclusive = True, указатель
текущей записи перемещается на следующую запись.
Если запись не найдена, указатель текущей записи всегда перемещается на ближайшую
запись с большим значением индекса.
В приводимых ниже примерах подразумевается KeyExclusive = False.
Предположим, что поисковое значение NumGr вводится в поле Editl, а NN - в поле
Edit2. Тогда обработчик нажатия кнопки для поиска FindButton может выглядеть так:
procedure TFormA.FindButtonClick(Sender: TObject);
var
Пусть в Edit1 введено 12 и в Edit2 - 4. Тогда указатель переместится на запись, у которой
значение NumGr равно 12 и значение поля NN равно 4:

NumGr        NN    Tovar
1   10       Макароны
12  1        Вода минеральная
12  4        Кефир // Перемещение указателя текущей записи
12  26       Груши
100 1        Конфеты «Ласточка»
100 10       Крупа гречневая

     Для точного поиска в Delphi имеется группа методов SetKey, EditKey, GotoKey,
которые должны выполняться вместе, и которые по функциональности аналогичны методу
FindKey. Использование их менее удобно: сначала набор данных переводится в состояние
dsSetKey (методом SetKey или, если он уже применялся для данного индекса, EditKey),
затем присваиваются поисковые значения полям и выполняется метод GotoKey. После
этого набор данных переходит в состояние dsBrowse. Результат выполнения аналогичен
результату, возвращаемому методом FindKey. Например, код

   if not Table2.FindKey([GrTmp,NNTmp]) then
       ShowMessage('Нет товара с такой группой и номером!');
эквивалентен более громоздкому коду с применением GotoKey:
   Table2.SetKey; Table2NumGr.Value := GrTmp;
   Table2NN.Value := NNTmp;
   if not Table2.GotoKey then
                    ShowMessage('Нет товара с такой группой и номером!');


     1. . Используя таблицы из базы данных DBDEMOS создать приложение, в
котором организовать точный поиск записей наборах данных по индексированным
полям с использованием методов FindKey, SetKey, EditKey, GotoKey (индекс по
одному полю, индекс по нескольким полям).


                                      Неточный поиск

     Неточный поиск (поиск на неточное, приблизительное соответствие) осуществляется
методом FindNearest. Он пытается отыскать в наборе данных запись, у которой индексные
поля соответствуют указанным значениям. Если такая запись найдена, указатель текущей
записи в наборе данных перемещается на нее или на следующую за ней запись, в
зависимости от значения свойства KeyExclusive. Если KeyExclusive = False (по умолчанию),
указатель текущей записи перемещается на нее. Если KeyExclusive = True, указатель
текущей записи перемещается на следующую запись.
     Если запись не найдена, указатель текущей записи всегда перемещается на ближайшую
запись с большим значением индекса.
     В приводимых ниже примерах подразумевается KeyExclusive = False.
     Предположим, что поисковое значение NumGr вводится в поле Editl, а NN - в поле
Edit2. Тогда обработчик нажатия кнопки для поиска FindButton может выглядеть так:

procedure TFormA.FindButtonClick(Sender: TObject);
var
                                         39