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

Void cado6Dlg::OnButtonBookmark()

{

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

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

try

{

pRecordset->PutBookmark(5.0);

}

catch(_com_error &ce)

{

Doc->ErrMessage(ce);

}

}

У даному фрагменті здійснюється перехід на запис із закладкою 5. При початковому відкритті набору вона відповідає фізичному номеру запису. У тому випадку, якщо записи будуть видалятися, буде здійснений перехід на перший запис, що зустрічається, у якого закладка більше вихідної. Для того щоб продовжувати працювати із закладками як з номерами фізичних записів, необхідно після зміни даних у наборі перечитувати його. Щоб зберегти поточні настроювання сортування, доцільно використовувати метод Requery() з параметром -1, що перечитає набір і перебудує всі закладки (Bookmark) зі збереженням сортування й інших настроювань. Однак це буде забирати тривалий час, тому що метод Requery() буде створювати індекси заново для створеного об'єкта Recordset.

10.11.6. Запис даних до xml-файлу

У даному розділі розглянемо запис набору даних запиту до xml-файлу. Розглянемо За це відповідає функція відгуку OnButtonSave() (кнопка <SAVE>). Наведемо текст даної функції.

//Запис до файлу XML

Void cAdo6Dlg::OnButtonSave()

{

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

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

CString str;

CFileDialog SaveDialog(false, "", "pRec1.xml",

OFN_PATHMUSTEXIST|OFN_NOCHANGEDIR|OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,

"Xml (*.xml)|*.xml|");

if (SaveDialog.DoModal()!=IDOK)return;

str = SaveDialog.GetPathName();

try

{

remove(str);

pRecordset->Save((_bstr_t)str,adPersistXML);

}

catch(_com_error &ce)

{

Doc->ErrMessage(ce);

}

}

Для запису набору даних Recordset до файлу з розширенням xml використовується функція Save, до якої передається назва файлу та параметр формату зберігання даних – adPersistXML.

10.11.7. Кнопки, призначені тільки для роботи з otl_tab

Даний розділ призначений для роботи тільки з даними експериментальної таблиці otl_tab, що входить у БД otl.mdb. Тут розглядаються функції відгуків додавання (OnZapis_Add1() (кнопка <Добавление1>), OnZapis_Add2() (кнопка <Добавление2>)), оновлення поточного запису (OnZapis_Update1() (кнопка <Обновление1> ), OnZapis_Update2() (кнопка <Обновление2> )), а також формування записів таблиці otl_tab заданими порціями (OnFormir_BD() ( кнопка <Формирование БД> )) і виведення розрахункових операцій по таблиці otl_tab (OnValues_Fields() (кнопка <Значение полей> )).

Додати й оновити поточний запис можна двома способами. Перший спосіб – це використання функцій з параметрами. Відповідно, для додавання записів – AddNew(), для оновлення – Update(), де як вхідні параметри треба передавати масиви. Цей спосіб є нераціональним і наведений тут для того, щоб продемонструвати роботу з динамічними масивами в Visual C++ (структура SAFEARRAY). Доцільним є другий спосіб, де конкретним полям привласнюються відповідні значення (кнопки <Добавление2>, <Обновление2>).

Після такого присвоєння необхідно викликати метод Update(), що збереже доданий або обновлений запис у БД. При використанні методу AddNew() з параметрами запис даних у БД відбувається автоматично (виклик методу Update() не потрібний).

Розглянемо функцію відгуку OnZapis_Add1() кнопки <Добавление1> для додавання запису з використанням динамічних масивів SAFEARRAY.

// кнопка <Добавление1>

// Додавання записів у таблицю otl_tab за допомогою функції AddNew з параметрами

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