русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Использование SetKey для поиска записей в таблице


Дата добавления: 2015-07-09; просмотров: 1658; Нарушение авторских прав


С целью нахождения необходимых значений полей таблицы, используются две процедуры SetKey и GotoKey. Обе эти процедуры предполагают, что поле, по которому производится поиск индексировано.

Для того, чтобы создать программу поиска данных, требуется поместить в форму компоненты Table, DataSource, DBGrid, Button, Label и Edit, и расположить их как показано на (рис. 5). Далее необходимо изменить имя кнопки Buttonна имя SearhBtn, и затем соединить компоненты управления базой данных так, чтобы пользователь открыл в DBGrid1 таблицу Customer.

 

Расположение компонентов в форме

Рис.6

 

Вся функциональность данной программы скрыта в единственном методе, который является обработчиком события OnClick кнопки SearchBtn. Данный обработчик считывает строку, введенную в окно редактора, и ищет ее значение в поле CustNo, и помещает фокус на найденной записи. В простейшем варианте, код обработчика события выглядит так (пример 14):

Пример 14

procedure TForm1.SearhBtnClick(Sender: TObject);

Begin

Table1.SetKey;

Table1.FieldByName('CustNo').AsString := Edit1.Text;

Table1.GotoKey;

end;

Первый вызов в этой процедуре установит Table1 в режим поиска. Далее, свойству Fields присваивается значение, которое пользователь ввел в элемент ввода. Для фактического выполнения поиска нужно вызывать метод Table1.GotoKey.

Если необходимо выполнить поиск не по первичному индексу файла, тогда пользователю потребуется определить имя индекса, который будет использоваться свойством IndexName. Например, если таблица Customer имеет вторичный индекс по полю City, тогда пользователь должен установить свойство IndexName равным имени индекса. Реализация описанного метода приведена в примере 15.

Пример 15

procedure TForm1.SearhBtnClick(Sender: TObject);

Begin

Table1.IndexName := 'CityIndex';



Table1.Active := True; Table1.SetKey;

Table1.FieldByName('City').AsString := Edit1.Text; Table1.GotoKey;

end;

Обращаем внимание на тот факт, что поиск не будет выполняться, если пользователь не назначит правильно индекс (свойство IndexName). Также, пользователь должен помнить, что IndexName - это свойство объекта Ttable, и не присутствует в других прямых потомках TDataSet или TDBDataSet.

Когда пользователь производит поиск некоторого значения, всегда существует вероятность того, что поиск окажется неудачным. В таком случае будет автоматически возникать исключительная ситуация (exception). Если возникает необходимость обработать ошибку самостоятельно, то пользователь мог бы написать примерно такую процедуру (пример 16).

Пример 16

procedure TForm1.SearhBtnClick(Sender: TObject);

Begin

Cust.SetKey;

Cust.FieldByName('CustNo').AsString:= CustNoEdit.Text;

if not Cust.GotoKey then

raise Exception.CreateFmt('Cannot find CustNo %g', [CustNo]);

end;

В приведенном примере 16, неверное присвоение номера, или неудача поиска автоматически приведут к сообщению об ошибке:

‘Cannot find CustNo %g’.

Иногда требуется найти не точно совпадающее значение поля, а близкое к его значению. Для этого следует вместо GotoKey пользоваться методом GotoNearest.



<== предыдущая лекция | следующая лекция ==>
Работа с данными | Использование фильтров для ограничения числа записей


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 2.745 сек.