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

10.11.5. Переходи по записах

У даному пункті розглядаються функції відгуків на використання класичних методів переходу по записах: OnButtonFirst() (кнопка <First>) – перехід на перший запис; OnButtonLast() (кнопка <Last>) – перехід на останній запис; OnButtonLeft() (кнопка <---- ) – перехід на попередній запис; OnButtonRight() (кнопка ----> ) – перехід на наступний запис. Крім цього розглядаються функції посторінкового переходу по записах: OnButtonPgup() (кнопка <PgUp>) – перехід на попередню сторінку; OnButtonPgdn() (кнопка <PgDn>) – перехід на наступну сторінку, а також функції установки логічного номера запису (номера по порядку) – OnButtonRecno() (кнопка <Recno>) і перехід по зазначеній закладці BookmarkOnButtonBookmark() (кнопка <Bookmark>).

Приведемо функції відгуків переходу по записах, відповідно на перший, останній, попередній й наступний записи.

// Перехід на перший запис - кнопка <First>

Void cado6Dlg::OnButtonFirst()

{

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

if(!pRecordset->GetRecordCount())return;

try

{

pRecordset->MoveFirst();

}

catch(_com_error &ce)

{

Doc->ErrMessage(ce);

}

}

// Перехід на останній запис - кнопка <Last>

Void cado6Dlg::OnButtonLast()

{

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

if(!pRecordset->GetRecordCount())return;

try

{

pRecordset->MoveLast();

}

catch(_com_error &ce)

{

Doc->ErrMessage(ce);

}

}

// Перехід на попередній запис - кнопка <----

Void cado6Dlg::OnButtonLeft()

{

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

if(!pRecordset->GetRecordCount())return;

try

{

if(!pRecordset->BOF)

{

pRecordset->MovePrevious();

if(pRecordset->BOF)pRecordset->MoveFirst();

}

else pRecordset->MoveFirst();

}

catch(_com_error &ce)

{

Doc->ErrMessage(ce);

}

}

// Перехід на наступний запис - кнопка ---->

Void cado6Dlg::OnButtonRight()

{

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

if(!pRecordset->GetRecordCount())return;

try

{

if(!pRecordset->ADO_EOF)

{

pRecordset->MoveNext();

if(pRecordset->ADO_EOF)pRecordset->MoveLast();

}

else pRecordset->MoveLast();

}

catch(_com_error &ce)

{

Doc->ErrMessage(ce);

}

}

У кожній з наведених функцій перевіряється умова на наявність записів, якщо їх немає – здійснюється вихід з функції. При переході по записах використовується технологія обробки виняткових ситуацій try ... catch(). Якщо відбувається перехід на наступний запис, то перевіряється змінна наявності кінця набору ADO_EOF, при переході на попередній запис – змінна наявності початку набору BOF. Якщо покажчик буде переміщений в ADO_EOF – здійсниться перехід на останній запис (метод MoveLast()), якщо в BOF – на перший запис (метод MoveFirst()). При цьому необхідно виконати перевірку як до, так і після переходу на наступний або попередній запис.

Крім того, використовуються функції переходу на заданий логічний номер запису (абсолютне значення), а також функції переходу по сторінках. Тобто, знаючи кількість відображуваних даних на екрані дисплея в елементі керування DataGrid, можна переміщатися на довільну сторінку з даними. Відповідні функції відгуку наведені нижче.

// Перехід на запис із логічним номером 5 - кнопка <Recno>

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