- •О.С. Зеленський
- •Розділ 9. Структура створення додатків
- •9.1. Загальна структура додатків
- •9.2. Додатки без використання архітектури «Документ-вид»
- •9.2.1. Приклад додатку реєстрації wnd-класу вікна
- •9.2.2. Створення та видалення дочірніх вікон без використання архітектури «Документ-Вид»
- •9.2.3. Створення дочірніх вікон без використання архітектури «Документ-Вид» (переключення вікон з використанням функції ShowWindow)
- •9.3. Архітектура «Документ-Вид»
- •Idr_mainframe формат строкового ресурсу.
- •9.3.1. Приклад додатку з використанням архітектури «Документ-Вид»
- •9.3.2. Види у архітектурі «Документ-Вид»
- •9.3.3. Створення видів у архітектурі «Документ-Вид» (переключення видів з використанням функції ShowWindow)
- •9.3.4. Робота з документами та видами на прикладі додатку SingleTemplate
- •9.4. Додатки mdi, робота з шаблонами
- •9.4.1. Приклад додатку mdi з одним шаблоном
- •9.4.2. Приклад додатку mdi з декількома шаблонами
- •Контрольні питання
- •Розділ 10. Робота з базами даних з використанням об'єктів ado
- •10.1.1. Ініціалізація об'єктів com з використанням директиви #import
- •10.1.2. Підтримка класів сом
- •10.2. Об'єкт Connection
- •10.3. Об'єкт Command
- •10.4. Об'єкт Recordset
- •10.5. Об'єкт Field і колекція Fields
- •10.6. Об'єкт Error і колекція Errors
- •10.8. Коротка характеристика структури мови sql
- •10.9. Синтаксис оператора вибору Select
- •10.10. Приклад програмування об'єктів ado
- •10.11. Опис розробленого навчального пакету ado6 для роботи з базами даних access та MySql
- •Int tip_bd; // тип бд 1- ms access, 2- MySql, 3 - xml
- •Void Connect_Baza(cString str);
- •Void ErrMessage(_com_error &ce);
- •If(pConn.CreateInstance("adodb.Connection"))
- •If(pRecordset.CreateInstance("adodb.RecordSet"))
- •Void cAdo6Doc::ErrMessage(_com_error &ce)
- •Void cAdo6Doc::OnMsaccess()
- •Void cAdo6Doc::OnMysql()
- •Void cAdo6Doc::OnXmlRead()
- •Void cAdo6Doc::Connect_Baza(cString str)
- •Virtual void DoDataExchange(cDataExchange* pDx);
- •Void cAdo6Dlg::DoDataExchange(cDataExchange* pDx)
- •Void cAdo6Dlg::Struct_MySql()
- •Void cAdo6Dlg::OnSelchangeListBaza()
- •Void cAdo6Dlg::OnVibor_bd()
- •Void cAdo6Dlg::AccessOpen()
- •Void cAdo6Dlg::xmlOpen()
- •Void cAdo6Dlg::Structura_bd()
- •Void cAdo6Dlg::OnSelchangeListTab()
- •Void cAdo6Dlg::show(int kod, int kod_bd)
- •Void cAdo6Dlg::Recordset_Baza(cString str)
- •Void cAdo6Dlg::OnClose()
- •10.11.2. Формування списку бд (MySql), відкриття бази даних (ms access), відкриття xml-файлу, формування списку таблиць (MySql і ms access) та полів (MySql, ms access, xml)
- •Void cAdo6Dlg::OnSelchangeListTab()
- •1. Обрану таблицю необхідно брати в зворотні лапки "`", щоб виключити помилку в тому випадку, якщо в імені таблиці будуть зустрічатися пробіли.
- •10.11.3. Робота з sql-запитами
- •Void cAdo6Dlg::OnZapros_Select()
- •If (str_query.Mid(0,6).Compare("select"))
- •If(!baza.Left(3).Compare("otl") &&
- •Void cAdo6Dlg::Recordset_Baza(cString str)
- •Void cado6Dlg::OnZapros_Make()
- •Vr_zap.Format(" Запрос выполнен за %f сек ",conec - nach);
- •10.11.4. Видалення, сортування, пошук, фільтрація, оновлення набору записів
- •Void cado6Dlg::OnZapis_Delete()
- •Void cado6Dlg::OnCheck_Sort()
- •Void cado6Dlg::OnFind()
- •0L,adSearchForward,bb);
- •Void cado6Dlg::OnFilter()
- •Void cado6Dlg::OnVozvrat()
- •10.11.5. Переходи по записах
- •Void cado6Dlg::OnButtonFirst()
- •Void cado6Dlg::OnButtonLast()
- •Void cado6Dlg::OnButtonLeft()
- •Void cado6Dlg::OnButtonRight()
- •Void cado6Dlg::OnButtonRecno()
- •Void cado6Dlg::OnButtonPgup()
- •Void cado6Dlg::OnButtonPgdn()
- •Void cado6Dlg::OnButtonBookmark()
- •10.11.6. Запис даних до xml-файлу
- •Void cAdo6Dlg::OnButtonSave()
- •10.11.7. Кнопки, призначені тільки для роботи з otl_tab
- •Void cado6Dlg::OnZapis_Add1()
- •Void cado6Dlg::OnZapis_Add2()
- •Void cado6Dlg::OnZapis_Update1()
- •Void cado6Dlg::OnZapis_Update2()
- •Void cado6Dlg::OnFormir_bd()
- •Void cAdo6Dlg::OnValues_Fields()
- •10.12. Використання у якості джерела даних електронної таблиці Excel
- •Контрольні питання
- •Завдання
- •Розділ 11. Програмування для інтернет
- •11.1. Створення броузера
- •11.3. Використання протоколу http
- •If ((pInternetSession)
- •11.4. Використання протоколу ftp
- •Контрольні питання
- •Розділ 12. Створення елементів activex
- •12.1. Створення елементів ActiveX
- •Invalidate();
- •12.2. Тестування елемента ActiveX
- •12.4. Створення елемента ActiveX на базі стандартних елементів
- •12.5. Відображення елементів ActiveX
- •Контрольні питання
- •Розділ 13. Налагодження програм
- •Int data[5];
- •Invalidate();
- •13.3. Установка точки переривання
- •13.2. Покрокове виконання програми
- •13.4. Перевірка значень змінних під час виконання програми
- •Контрольні питання
- •Список літератури
- •Додатки
Virtual void DoDataExchange(cDataExchange* pDx);
//}}AFX_VIRTUAL
void show(int kod = SW_SHOW, int kod_bd = 0);
void Struct_MySQL();
void Structura_BD();
void Recordset_Baza(CString str);
void AccessOpen();
void XMLOpen();
// Implementation
protected:
// Generated message map functions
//{{AFX_MSG(CAdo6Dlg)
virtual BOOL OnInitDialog();
afx_msg void OnVibor_BD();
afx_msg void OnZapros_Select();
afx_msg void OnZapis_Delete();
afx_msg void OnZapis_Add1();
afx_msg void OnZapis_Add2();
afx_msg void OnZapis_Update1();
afx_msg void OnZapis_Update2();
afx_msg void OnValues_Fields();
afx_msg void OnFind();
afx_msg void OnCheck_Sort();
afx_msg void OnFormir_BD();
afx_msg void OnZapros_Make();
afx_msg void OnFilter();
afx_msg void OnVozvrat();
afx_msg void OnSelchangeListTab();
afx_msg void OnButtonFirst();
afx_msg void OnButtonLeft();
afx_msg void OnButtonRight();
afx_msg void OnButtonLast();
afx_msg void OnButtonPgup();
afx_msg void OnButtonPgdn();
afx_msg void OnButtonBookmark();
afx_msg void OnButtonRecno();
afx_msg void OnButtonSave();
afx_msg void OnClose();
afx_msg void OnSelchangeListBaza();
//}} AFX_MSG
DECLARE_MESSAGE_MAP()
};
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif //!defined(AFX_ADO6DLG_H__9E69A617_5804_4897_80D7_434B3365BFD2__INCLUDED_)
Наведемо алгоритм роботи прикладу ADO6 у вигляді блок-схеми (рис. 10.8):
Рис. 10.8. Блок-схема алгоритму реалізації прикладу ADO6
Так як текст програми дуже об'ємний, доцільно навести функції відгуків кнопок, реалізованих в даному прикладі окремо з їх функціональними особливостями і детальним описом.
Нижче наведемо основний текст програми відповідно до представленої блок-схеми (рис. 10.8) і зупинимося на найбільш важливих моментах.
Реалізація класу CADO6Dlg наведена у файлі ado6Dlg.cpp.
#include "stdafx.h"
#include "Ado6.h"
#include "Ado6Dlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE [] = __FILE__;
#endif
// Заголовочні файли для роботи з функціями дати і часу
#include "time.h"
#include <sys/timeb.h>
/////////////////////////////////////////////////////////////////////////////
// CAdo6Dlg dialog
// Таблиця відгуків
BEGIN_MESSAGE_MAP(CAdo6Dlg, CDialog)
//{{AFX_MSG_MAP(CAdo6Dlg)
ON_LBN_SELCHANGE(IDC_LIST_BAZA, OnSelchangeListBaza)
ON_LBN_SELCHANGE(IDC_LIST_TAB, OnSelchangeListTab)
ON_BN_CLICKED(IDC_BUTTON_VIBORBD, OnVibor_BD)
ON_BN_CLICKED(IDC_BUTTON_SELECT, OnZapros_Select)
ON_BN_CLICKED(IDC_BUTTON_DELETE, OnZapis_Delete)
ON_BN_CLICKED(IDC_BUTTON_ADD1, OnZapis_Add1)
ON_BN_CLICKED(IDC_BUTTON_ADD2, OnZapis_Add2)
ON_BN_CLICKED(IDC_BUTTON_UPDATE1, OnZapis_Update1)
ON_BN_CLICKED(IDC_BUTTON_UPDATE2, OnZapis_Update2)
ON_BN_CLICKED(IDC_BUTTON_FIELDS, OnValues_Fields)
ON_BN_CLICKED(IDC_BUTTON_FIND, OnFind)
ON_BN_CLICKED(IDC_CHECK_SORT, OnCheck_Sort)
ON_BN_CLICKED(IDC_BUTTON_FORMIRBD, OnFormir_BD)
ON_BN_CLICKED(IDC_BUTTON_MAKE, OnZapros_Make)
ON_BN_CLICKED(IDC_BUTTON_FILTER, OnFilter)
ON_BN_CLICKED(IDC_BUTTON_VOZVRAT, OnVozvrat)
ON_BN_CLICKED(IDC_BUTTON_FIRST, OnButtonFirst)
ON_BN_CLICKED(IDC_BUTTON_LEFT, OnButtonLeft)
ON_BN_CLICKED(IDC_BUTTON_RIGHT, OnButtonRight)
ON_BN_CLICKED(IDC_BUTTON_LAST, OnButtonLast)
ON_BN_CLICKED(IDC_BUTTON_PGUP, OnButtonPgup)
ON_BN_CLICKED(IDC_BUTTON_PGDN, OnButtonPgdn)
ON_BN_CLICKED(IDC_BUTTON_BOOKMARK, OnButtonBookmark)
ON_BN_CLICKED(IDC_BUTTON_RECNO, OnButtonRecno)
ON_BN_CLICKED(IDC_BUTTON_SAVE, OnButtonSave)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// Конструктор
CAdo6Dlg::CAdo6Dlg(CWnd* pParent /*= NULL */)
: CDialog(CAdo6Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CAdo6Dlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
// Прив'язка об'єктів до елементів управління