Методическое пособие к лабораторным работам по курсу «База данных» Ташкент 2022
Программирование компонента TADOTable
Download 3.26 Mb.
|
Metodichka BD
Программирование компонента TADOTable
Проделав вышеописанные операции, мы получили небольшое, но уже довольно серьезное приложение, позволяющее в полной мере работать с нашей базой. Однако анализировать имеющиеся данные несколько затруднительно. Неплохо было бы добавить в программу поиск записей и фильтрацию по определенным критериями. Для начала поиск. Для этого у компонента TADOTable предусмотрено множество функций: TADOTable.Locate(const AnsiString KeyFields, const System::Variant &KeyValues, TLocateOptions Options); Ищет в ключевом поле, заданном в переменной KeyFields, значение переменной KeyValues. В случае если совпадение найдено, найденная запись становится текущей, т.е. курсор устанавливается на нее. В переменной Options указывается как преобразовывать значения для поиска может быть: loCaseInsensitive или loPartialKey. TADOTable.Seek(const Variant &KeyValues, TSeekOption SeekOption =soFirstEQ); Используется при поиске с помощью индексов. SeekOption определяет как поступать если запись найдена: soFirstEQ, soLastEQ, soAfterEQ , soAfter, soBeforeEQ, soBefore. Подробное описание их вы найдете в мануале. TADOTable.LookUp (const AnsiString KeyFields, const Variant &KeyValues, const AnsiString ResultFields); Возвращает в качестве результата набор типа Variant со значениями всех найденных значений, удовлетворяющих запросу. Существует еще несколько способов поиска информации в таблице: перебор всех элементов вручную, использование FindFirst, Next и т.д. Но мы перечислили только основные и необходимые, на мой взгляд, методы. Приведем пример использования метода Locate. Поместите на форму компонент TComboBox, TButton и TEdit, занесите в КомбоБокс названия всех полей вашей таблицы (для этого используется свойство Items). В Edit мы будем вводить значение необходимое для поиска, а из ComboBox выбирать поле, по которому осуществлять поиск. Теперь дважды щелкните по Button или выберите событие OnClick в инспекторе объектов. Впишете в него следующий код: void __fastcall TForm1::Button1Click(TObject *Sender) { ADOTable1->Locate(ComboBox1->Text,Edit1->Text,[loCaseInsensitive]); //здесь по указанному в Combo полю ищем значении из Edit. Все просто //loCaseInsensitive - это поиск без ориентации на строчные и прописные буквы } Видите, для организации простого поиска достаточного всего одной строчки кода. Настало время добавить в наш проект фильтрацию. Добавить еще один TEdit и TButton на форму. Для понимания принципа этого будет достаточно. И разберите вот этот код: void __fastcall TForm1::Button2Click(TObject *Sender) { ADOTable1->Filtered=false; // Отменяем предыдущую фильтрацию если была ADOTable1->Filter=Edit2->Text; // Выставляем критерий фильтрации ADOTable1->Filtered=true; // И снова включает фильтрацию } Объясню, что может вводиться в Edit2. Мы создали некий очень далекий аналог командной строки. Вот шаблон, по которому работает фильтрация: <имя поля> |параметр (=,>,<,>=,<= и т.д.)| <значение> Вот пример: ФИО = Иванов Иван Петрович В результате в таблице останутся только записи где, поле ФИО имеет значение "Иванов Иван Петрович" без внесения физических изменений в таблицу. Download 3.26 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling