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




support

//}}AFX_VIRTUAL

// Implementation

#ifdef _DEBUG

virtual void AssertValid() const;

virtual void Dump(CdumpContext& dc) const;

#endif

};

Реалізація класу CDAODBSet показує, як ці змінні ініціалізуються в конструкторі класу. Звертання до цих змінних є також в реалізації функції DoFieldExchange, сгенерованої мастером AppWizard. Ця функція здійснює обмін даними між змінними-членами в класі і полями в базі даних.

Реалізація класу CDAODBSet:

IMPLEMENT_DYNAMIC(CDAODBSet, CDaoRecordset)

CDAODBSet::CDAODBSet(CDaoDatabase* pdb)

: CDaoRecordset(pdb)

{

//{{AFX_FIELD_INIT(CDAODBSet)

m_LastName = _T("");

m_FirstName = _T("");

m_Age = 0;

m_Name = _T("");

m_MaxAge = 0;

m_nFields = 5;

//}}AFX_FIELD_INIT

m_nDefaultType = dbOpenDynaset;

}

Cstring CDAODBSet::GetDefaultDBName()

{

return _T("D:\Visual Studio\MyProjects\DAODB\Employee1.mdb");

}

Cstring CDAODBSet::GetDefaultSQL()

{

return _T("[Employees],[Plans]");

}

void CDAODBSet::DoFieldExchange(CDaoFieldExchange* pFX)

{

//{{AFX_FIELD_MAP(CDAODBSet)

pFX->SetFieldType(CDaoFieldExchange::outputColumn);

DFX_Text(pFX, _T("[LastName]"), m_LastName);

DFX_Text(pFX, _T("[FirstName]"), m_FirstName);

DFX_Long(pFX, _T("[Age]"), m_Age);

DFX_Text(pFX, _T("[Name]"), m_Name);

DFX_Long(pFX, _T("[MaxAge]"), m_MaxAge);

//}}AFX_FIELD_MAP

}

Для виконання задачі DoFieldExchange використовує функції DFX_. Ці функції є DAO-аналогами функцій RFX_, що використовуються для обміну полями ODBC.

ФункціїDFX_.

Ім'я функції

Тип поля

Тип ODBC SQL

FX_Binary

CByteArray

DAO_BYTES

DFX_Bool

BOOL

DAO_BOOL

DFX_Byte

BYTE

DAO_BYTES

DFX_Currency

COleCurrency

DAO_CURENCY

DFX_DateTime

COleDateTime

DAO_DATE

DFX_Double

double

DAO_R8

DFX_Long

long

DAO_I4

DFX_LongBinary

CLongBinary

DAO_BYTES

DFX_SHORT

short

DAO_I2

DFX_Single

float

DAO_R4

DFX_Text

Cstring

DAO_CHAR,DAO_WCHAR

Клас документа CDAODBDoc містить нову змінну m_dAODBSet типу CDAODBSet. Ця змінна представляє набір записів, з якими пов'язаний документ. Клас перегляду CDAODBView містить вказівник типу CDAODBSet (m_pSet); в реалізації по замовченю він встановлений для вказівки на змінну m_dAODBSet об'єкта-документу. Клас перегляду також містить нову функцію OnGetrecordset, яка в реалізації по замовченню повертає m_pSet.

Настройка застосування.

В діалогове вікно IDD_DAODB_FORM додано відповідні статичні елементи керування та елементи керування редагуванням. За допомогою діалогового вікна Add Member Variable майстера ClassWizard ідентифікуємо змінні діалогового вікна відповідними змінними наборами записів. Це робиться за допомогою відповідної змінної m_pSet.

Для зміни критерія вибору можна скористатися функцією CDAODBSet::GetDefaultSQL. Реалізація цієї функції по замовченню повертає імена імена таблиць, з яких вибираються записи. В SQL потрібний нам вибір можна було б реалізувати:

SELECT Employees.LastName, Employees.FirstName, Employess.Age, Plans.Name, Plans.MaxAge

FROM Employees, Plans

Where Employees.Age

ORDER BY Employees.LastName, Employees.FirstName, Plans.Name

Вибрати відомості про прізвища та імена працівників, а також назви планів, для тих працівників, вік яких не перевищує максимальний вік, допустимий для цього плану.

При цьому вивід повинен бути відсортований спочатку за прізвищами працівників, потім за їх іменами, і накінець, за назвами планів.

Для ствоення відповідного запиту можна використовувати змінні класу CDaoRecordset. Цей клас пропонує дві змінні, одна з яких (m_strFilter) відповідає умові SQL WHERE , а інша (m_strSort) – умові SQL ORDER BY.

Оновлення CDAODBSet::GetDefaultSQL

Cstring CDAODBSet::GetDefaultSQL()

{

m_strFilter=_T("[Employees].[Age]<[Plans].[MaxAge]");

m_strSort=_T("[Employees].[LastName],[Employees].[FirstName],[Plans].[Name]");

return _T("[Employees],[Plans]");

}

Застосування має такий вигляд:

Visual C

За допомогою Component Galery до проекта було ще додано екранну заставку (Splash Screen)

Visual C

Та системна інформація для діалогового вікна About (System Info for About Dialog).

Visual C

Візуальні інстументи бази даних.

Visual C++ інтегрує в Visual Studio ряд інструментів, пов'язаних з базами даних. Тепер можна створювати бази даних, заповнювати таблиці, створювати і тестувати запити та відлагоджувати збережені процедури на віддаленому або локальному сервері, не залишаючи середовище Visual Studio.

Багато з можливостей розробки баз даних доступні для більшості джерел даних, інші, такі як створення таблиці, характені для Microsoft SQL Server.

Дві можливості представляють особливий інтерес. Перша – Query Designer, який дозволяє створювати і тестувати запити SQL з Visual Studio: друга – відладчик SQL, який дозволяє відлагоджувати збережені процедури, що виконуються на Microsoft SQL Server.

Для демонстації вищезазначених можливостей була створена база даних за допомогою Microsoft Access. Ця база містить дві таблиці: таблиця Books відображає книги з їх назвами, авторами та ISBN індексами; таблиця Authors містить відомості про авторів. Обидві таблиці з'єднуються відношенням – "багато-до-багатьох": Books.Authors -> Authors.Name.

Для доступу до бази даних з Visual Studio необхідно створити проект бази даних (Database project). Доступ до джерела даних здійснюється через вказівку імені файлу джерела даних. Це файл – Books.DSN.

У вкладці FileView у вікні Workspace є лише один файл – файлове джерело даних (файл DSN):

Visual C

У вкладці DataView можна побачити таблиці і поля, а також запити, якщо вони були створені:

Visual C

Таким чином, тепер можна перевіряти і змінювати зміст таблиць, створювати SQL запити. Не можна створювати нові таблиці.

Для додавання або зміни


 
Загрузка...