КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
If not Tablel.FindKey( [GrTmp,NNTmp] )then
Begin Var Точный поиск Установка значений для поиска Обзор методов ПОИСК ЗАПИСЕЙ В НД Для поиска записей в НД в компоненте TTable применяются следующие методы: FindKey - ищет запись, точно удовлетворяющую условиям в списке значений; существует также дублирующий его метод GoToKey, FindNearest - ищет запись, наиболее полно удовлетворяющую условиям в списке значений; существует также дублирующий его метод GoToNearest. В отличие от методов Locate и Lookup, которые TTable унаследовал от TDBDataSet и которые описаны в п. 6.4, эти методы ищут запись по ключевым полям. Если в таблице не построен хотя бы один индекс, использовать методы FindKey и FindNearest нельзя. Состав полей, используемых для идентификации нужной записи при поиске в НД, определяется текущим индексом. Поэтому в качестве текущего нужно установить индекс, построенный по полям, значения которых и будут отыскиваться. Напомним, что для установки текущего индекса используют свойства IndexFieldNames или IndexName. Для индексов, в состав которых входит более одного поля, должны указываться значения всех полей, входящих в индекс, или значения полей старших уровней вложенности. Более подробно см. п. 7.4.6. Для точного поиска (поиска на точное соответствие) применяется метод FindKey. Он пытается отыскать в НД запись, у которой индексные поля соответствуют значениям, указанным в параметре обращения. Если такая запись найдена, метод FindKey возвращает True и указатель текущей записи в НД (курсор НД) устанавливается на эту запись, т. е. она делается текущей. Если найдена группа записей, отвечающая условию, текущей становится логически первая из них. Если запись не найдена, курсор НД не перемещается и метод возвращает False.
Пример. Пусть имеется НД с полями GrNum (номер группы), NN (номенклатурный номер товара), Tovar (наименование товара):
Рис. 7.4. Записи набора данных. Предположим, что поисковое значение GrNum вводится в Edit1, a NN- в Edit2. Тогда обработчик нажатия клавиши поиска FindButton может выглядеть так (для простоты в обработчике не контролируется правильность ввода в компонентах Edit1, Edit2): procedure TForm1.FindButtonClick(Sender: TObject); GrTmp, NNTmp: Integer GrTmp:= StrToInt (Edit1.Text); NNTmp:= StrToInt(Edit2.Text); // Поиск записи: ShowMessage('Нет товара с такой группой и номером!'); end;
Пусть в Edit1 введено 12 и в Edit2 - 4. Тогда указатель переместится на запись, у которой значение GrNum равно 12 и значение поля NN равно 4 (рис. 7.5):
Для точного поиска в Delphi имеется группа методов SetKey, EditKey, GotoKey, которые должны выполняться вместе и которые по функциональности аналогичны методу FindKey. Использование их менее удобно: сначала НД переводится в состояние dsSetKey (методом SetKey или, если он уже применялся для данного индекса, EditKey), затем присваиваются поисковые значения полям и выполняется метод GotoKey. После этого НД переходит в состояние dsBrowse. Результат выполнения аналогичен результату, возвращаемому методом FindKey. Например, код
Дата добавления: 2015-06-29; Просмотров: 315; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |