REFERATUA.ORG.UA — База українських рефератів




також поновлювані. Статичній набір може містити поля з одної або декількох таблиць, але ці поля не поновлювані. Статичний набір – це статична копія записів, що використовується для пошуку даних або створення звітів.

Набір записів представляє велику кількість функцій. Найважливішими з них є функції переміщення по набору записів та функції поновлення даних. К функціям переміщення відносяться Find, FindFirst, FindLast, FindPrev, Move, MoveFirst, MoveLast, MoveNext, MovePrev. До числа функцій поновлення входять AddNew, CancelUpdate, Delete, Edit, Update.

Інші функції, пов'язані з переміщенням, - GetAbsolutePosition, GetBookmark, GetPercenrPosition, SetAbsolutePosition, SetBookmark, SetPercentPosition.

Клас CDaoRecordset представляє різні функції атрибутів для установки та отримання атрибутів набору записів. Напиклад, функцію CanUpdate можна використовувати для визначення, чи є набір записів поновлюваним; функція SetCurrеntIndex застосовується для установки поточного індексу на набір записів таблиці.

Звичайно клас CDaoRecordset використовується шляхом створення похідного від нього класу набору записів, додавання змінних класу, що представляють поля, та перекриттям функції DoFieldExchange для підтримки обміну даними між базой даних та змінними класу. Проте існує декілька методів, що забезпечують альтернативну можливість. До їх числа входять функції GetFieldValue та SetFieldValue, які представляють можливість прямого доступу до значення поля за ім'ям. Цей метод називають динамічним зв'язуванням, на противагу статичному, який виконується за допомогою DoFieldExchange.

Інші операції з наборами даних можна використовувати для керування локально підтримуємим кешем записів і для маніпулювання індексами набору записів.

Клас CDaoDatabase представляє з'єднання з базою даних. З'єднання відбувається викликом функції CDaoDatabase::Open і переривається викликом CDaoDatabase::Close. Нова база даних може бути створена за допомогою функції CDaoDatabase::Create.

Клас CDaoDatabase представляє функції атрибутів; наприклад, GetName можна використовувати для отримання імені бази даних, а IsOpen – для визначення, чи відкрито з'єднання, що представляється об'єктом CDaoDatabase.

Інші методи використовуються для маніпулювання наборами об'єктів визначення таблиць і визначення запитів для цієї таблиці даних. Зокрема, функцію DeleteTableDef використовують для видалення з бази даних не тільки об'єкта TableDef DAO, але і основної таблиці і всіх її даних.

Клас CDaoWorkspaceпредставляє сеанси баз даних. Як правило, не треба створювати об'єкти типу CDaoWorkspace, якщо немає необхідності використовувати спеціальні функціональні можливості, що доступні за допомогою цього класу, або отримувати доступ до баз даних, захищених паролем.

Робочій простір DAO може бути створений викликом функції CDaoWorkspace::Create. Аргументи цієї функції вказують ім'я робочого простору, ім'я користувача та пароль. Існуючий об'єкт робочого простору може бути відкритий викликом CdaoWorkspace::Open; робочий простір по замовченню може бути явно відкритий шляхом передачі цій функції параметра NULL.

Існує декілька функцій, які маніпулюють базами даних та самою Jet-машиною баз даних. Наприклад, базу даних можна зжати або відновити викликом функції CompacDatabase або RepairDatabase. Інші функції можна використовувати для маніпулювання іменами користувачів, паролями або іншими атрибутами баз даних.

Клас CDaoQueryDef представляє визначення запитів. Для створення нового визначення запиту слід скористатися функцією CQueryDef::Create; для доступу до визначення запиту, збереженого в базі даних, необхідно використовувати функцію CQueryDef::Open. Щойно створений запит може бути доданий до бази даних викликом функції CQueryDef::Append.

Об'єкти CQueryDef використовуються разом з об'єктами CRecordset для отримання даних з бази даних, а також - безпосередньо; для виконання запиту на дію, яка міняє дані в базі даних, слід використовувати функцію CQueryDef::Execute.

Інші методи CQueryDef використовують для установки і отримання атрибутів визначення запитів і для маніпулювання полями запитів і параметрами.

Клас CDaoTableDef представляєвизначення таблиць. Визначення таблиці описує структуру і атрибути таблиці в базі даних.

Існуюче в базі даних визначення таблиці може бути відкрито викликом функції CDaoTableDef::Open. Нове визначення таблиці може бути створене викликом функції CDaoTableDef::Create. Для додавання до бази даних таблиці, що відповідає новому визначенню, слід викликати функцію Append.

Поля можуть створюватися і видалятися за допомогою функцій CreateField та DeleteField. Індекси для таблиці можуть бути створені або видалені викликом функцій CreateIndex та DeleteIndex. Інші функції можна використовувати для установки або отримання різних атрибутів таблиці, наприклад, GetFieldCount повертає кількість полів в таблиці, а SetValidationRule використовується для присвоєння полю умови перевірки на значення.

Крім цих основних класів DAO операції DAO використовують два додаткових класи: CDaoFieldExchange та CDaoException.

CDaoFieldExchangeвикористовується при звертаннях до CDaoRecordset::DoFieldExchange. Об'єкт типу СdaoFieldExchange визначає поле, що змінюється операцією обміну полями, та забезпечує інші параметри, що характерізують обмін полями.

Всі класи DAO використовують об'єкти виключення типу CDaoException для повідомлення про помилки.

Побудова застосування DAO.

.Для побудови застосування DAO необхідно перш за все створити джерело даних. Нехай ним буде база даних, створена в Microsoft Access. База даних Employee складається з 2 таблиць, де міститься інформація про працівників (їх ім'я та вік), та відомості про робочі плани (назва плану та максимальний вік робітника, якому буде дозволено займатися цим планом).

Створення застосування-DAO здійснено за допомогою AppWizard. Проект – однодокументний, в якості джерела даних (Data Source) вибано DAO, а дійсним файлом бази даних – базу даних Employee.

Структура застосування, яка створюється AppWizard схожа на відповідну для ODBC.

КVisual C
ласи застосування:

Новий клас CDAODBSet (DAODB – назва створюваного проекту) породжений від CDaoRecordset і представляє набір рядків, які будуть вибиратися з об'єднання всіх таблиць. AppWizard вставляє змінні, які відповідають стовпцям (полям) таблиць.

Об'явлення класу CDAODBSet:

class CDAODBSet : public CDaoRecordset

{

public:

CDAODBSet(CDaoDatabase* pDatabase = NULL);

DECLARE_DYNAMIC(CDAODBSet)

// Field/Param Data

//{{AFX_FIELD(CDAODBSet, CDaoRecordset)

Cstring m_LastName;

Cstring m_FirstName;

long m_Age;

Cstring m_Name;

long m_MaxAge;

//}}AFX_FIELD

// Overrides

// ClassWizard generated virtual function overrides

//{{AFX_VIRTUAL(CDAODBSet)

public:

virtual Cstring GetDefaultDBName(); // REVIEW: Get a comment here

virtual Cstring GetDefaultSQL(); // default SQL for Recordset

virtual void DoFieldExchange(CDaoFieldExchange* pFX); // RFX


 
Загрузка...