Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Visual2.doc
Скачиваний:
5
Добавлен:
07.03.2016
Размер:
3.31 Mб
Скачать

Void cado6Dlg::OnFind()

{

if(pRecordset->GetState()==0)return;

_variant_t bb = 0L;

// Параметри Find:

// Перший - умова, 2-й - зміна початку пошуку на кількість записів

// 3-й - напрямок пошуку(adSearchForward

// (1) - вниз, adSearchBackward (-1) - вгору)

// 4-й - 0 - організація пошуку щодо поточного запису,

// або щодо встановленої закладки Bookmark.

CString str_query;

m_editquery.GetWindowText(str_query);

struct _timeb timebuffer;

_ftime( &timebuffer );

double nach = timebuffer.time+timebuffer.millitm/1000.0;

try

{

pRecordset->Find((_bstr_t)str_query,

0L,adSearchForward,bb);

_ftime( &timebuffer );

double conec = timebuffer.time+timebuffer.millitm/1000.0;

CString vr_zap;

vr_zap.Format(" Поиск выполнен за %f сек ",conec - nach);

MessageBox(vr_zap);

if(pRecordset->ADO_EOF)

MessageBox("Значение не найдено! Указатель за концом БД (EOF = true)");

}

catch(_com_error &ce)

{

Doc->ErrMessage(ce);

m_editquery.SetFocus ();

}

}

Перевага методу Find() полягає в тому, що він здійснює швидкий пошук щодо поточного або заданого запису. Він дозволяє шукати дані по заданих умовах тільки в одному полі, тому що немає необхідності робити це по декількох полях. Скажімо, якщо необхідно знайти в таблиці otl_tab запис із id = 26, kod = 48, спочатку робимо сортування по цих двох полях, потім шукаємо id = 26 з першого запису, а після цього kod = 48 з того запису, на якому зупинився курсор. Таким чином, пошук з використанням методу Find() має дуже велике значення і є доцільним після застосування сортування із заданим набором. У якості першого вхідного параметра методу Find() виступає вираження пошуку, що може включати оператори відношення >, <, >=, <=, <>, =, а також оператор like. Другий вхідний параметр – зміна початкової кількості записів на певну величину (початковий зсув). Ця величина відносна й залежить від третього параметра – напрямок пошуку: adSearchForward (1) – пошук здійснюється вниз; adSearchBackward (-1) – вгору. У тому випадку, якщо пошук здійснюється вниз (adSearchForward (1)), і як другий параметр буде зазначена величина 3L, то позиція курсору зміститься на 3 записи вниз. У іншому випадку, коли пошук здійснюється вгору (adSearchBackward (-1)) – позиція курсору зміститься на 3 записи вгору. У якості другого параметру доцільно вказувати нульове значення.

Одним з важливих є останній, четвертий параметр. Якщо він дорівнює нулю – пошук здійснюється відносно поточного запису, в інших випадках йому необхідно вказати номер закладки Bookmark, що є унікальною для кожного запису й може бути використана як фізичний запис.

Властивість Sort і метод Find() об'єкта Recordset доцільно використовувати спільно для швидкого й ефективного пошуку інформації із застосуванням відкритих тимчасових індексів.

У деяких випадках роботи з набором записів доцільно відібрати дані з певною умовою. Для цього використовується властивість Filter. Нижче приведемо функцію відгуку OnFilter() (кнопка <Фильтр>), що демонструє роботу з даною властивістю.

// Робота з фільтром!!! - кнопка <Фильтр>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]