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

UptoLike

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

40
GrTmp, NNTmp: Integer;
begin
GrTmp := StrToInt(Editl.Text);
NNTmp := StrToInt(Edit2.Text);
// поиск записей
Table2.FindNearest([GrTmp,NNTmp]);
end;
Если в поле Edit1 введено значение 12 и в поле Edit2 введено значение 4. Тогда
указатель переместится на запись «Кефир»:
NumGr NN Tovar
1 10 Макароны
12 1 Вода минеральная
12 4 Кефир
12 26 Груши
100 1 Конфеты «Ласточка»
100 10 Крупа гречневая
Если в поле Edit1 введено значение 12 и в поле введено значение Edit2 – 0, то указатель
переместится на запись с большим значением индекса. Наращивание индекса ведется по
внутреннему полю (если оно есть) и только затем - по полю более высокого приоритета. В
нашем случае внутреннее поле в индексе - поле NN и будет выбрана запись «Вода
минеральная»:
NumGr NN Tovar
1 10 Макароны
12 1 Вода минеральная
12 4 Кефир
12 26 Груши
100 1 Конфеты «Ласточка»
100 10 Крупа гречневая
Если в поле Edit1 введено значение 50, в поле Edit2 введено значение 0 (или что-либо
другое, для данного состояния набора данных это неважно), записи с той же группой (50) и
большим значением номенклатурного номера нет. Поэтому указатель записи перемещается
на запись с большим номером группы:
NumGr NN Tovar
1 10 Макароны
12 1 Вода минеральная
12 4 Кефир
12 26 Груши
100 1 Конфеты «Ласточка»
100 10 Крупа гречневая
Заметим, что теоретически можно опускать в условиях поиска значение внешнего поля
индекса (в нашем случае поля NumGr). Например, можно задать в поле Edit1 значение 0, а
в поле Edit2 - 1. Однако, вопреки ожиданиям, курсор набора данных не встанет на первую
запись с номенклатурным номером 1 для первой попавшейся группы, а встанет на первую
запись с группой, превышающей 0, т.е. на логически первую запись в наборе данных при
сортировке по полям NumGr, NN:
GrTmp, NNTmp: Integer;
begin
GrTmp := StrToInt(Editl.Text);
NNTmp := StrToInt(Edit2.Text);

// поиск записей
Table2.FindNearest([GrTmp,NNTmp]);
end;

     Если в поле Edit1 введено значение 12 и в поле Edit2 введено значение 4. Тогда
указатель переместится на запись «Кефир»:

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

     Если в поле Edit1 введено значение 12 и в поле введено значение Edit2 – 0, то указатель
переместится на запись с большим значением индекса. Наращивание индекса ведется по
внутреннему полю (если оно есть) и только затем - по полю более высокого приоритета. В
нашем случае внутреннее поле в индексе - поле NN и будет выбрана запись «Вода
минеральная»:

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

     Если в поле Edit1 введено значение 50, в поле Edit2 введено значение 0 (или что-либо
другое, для данного состояния набора данных это неважно), записи с той же группой (50) и
большим значением номенклатурного номера нет. Поэтому указатель записи перемещается
на запись с большим номером группы:

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

     Заметим, что теоретически можно опускать в условиях поиска значение внешнего поля
индекса (в нашем случае поля NumGr). Например, можно задать в поле Edit1 значение 0, а
в поле Edit2 - 1. Однако, вопреки ожиданиям, курсор набора данных не встанет на первую
запись с номенклатурным номером 1 для первой попавшейся группы, а встанет на первую
запись с группой, превышающей 0, т.е. на логически первую запись в наборе данных при
сортировке по полям NumGr, NN:
                                            40