- •О.С. Зеленський
- •Розділ 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. Перевірка значень змінних під час виконання програми
- •Контрольні питання
- •Список літератури
- •Додатки
Void cAdo6Dlg::DoDataExchange(cDataExchange* pDx)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAdo6Dlg)
DDX_Control(pDX, IDC_EDIT1, m_editquery);
DDX_Control(pDX, IDC_LIST_BAZA, m_baza);
DDX_Control(pDX, IDC_LIST_TAB, m_tab);
DDX_Control(pDX, IDC_LIST_POL, m_pol)
DDX_Control(pDX, IDC_DATAGRID1, m_datagrid1);
//}}AFX_DATA_MAP
}
// Функції для роботи з MySQL
// Функція ініціалізації головного вікна
BOOL CAdo6Dlg::OnInitDialog()
{
CDialog::OnInitDialog();
// --- Доповнення ------------
pConn = Doc->pConn;
pRecordset = Doc->pRecordset;
fields = Doc->fields;
baza = Doc->baza;
table = Doc->table;
tip_bd = Doc->tip_bd;
// Приховування всіх елементів управління, окрім кнопки <Вибір бази>
show(SW_HIDE);
GetDlgItem(IDC_STATIC_BAZA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_LIST_BAZA)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_BUTTON_VIBORBD)->ShowWindow(SW_SHOW);
// Підключення до провайдера MySQL
if(tip_bd == 2)
{
GetDlgItem(IDC_BUTTON_VIBORBD)->
ShowWindow(SW_HIDE);
GetDlgItem(IDC_STATIC_BAZA)->ShowWindow(SW_SHOW);
GetDlgItem(IDC_LIST_BAZA)->ShowWindow(SW_SHOW);
// Виведення структури БД по MySQL;
Struct_MySQL();
show(SW_SHOW,1);
}
// Підключення до файлу XML
if(tip_bd == 3)
{
GetDlgItem(IDC_BUTTON_VIBORBD)->
SetWindowText("Выбор файла XML");
}
// Порожній рядок для введення нового запису
m_datagrid1.SetAllowAddNew(1);
return TRUE;
}
// Виведення БД по MySQL (список таблиць БД MySQL)
Void cAdo6Dlg::Struct_MySql()
{
CString str;
_RecordsetPtr PBaza("ADODB.Recordset");
pBaza = pConn->OpenSchema (ADODB::adSchemaCatalogs);
while (!pBaza->ADO_EOF)
{
str = (char *)(_bstr_t) pBaza->GetFields()->
GetItem((_variant_t)"CATALOG_NAME")->
GetValue();
if(str.Compare("mysql")!=0
&& str.Compare("information_schema")!=0)
m_baza.AddString(str);
pBaza->MoveNext();
}
pBaza-> Close();// закриття курсору
}
// Відкриття бази даних (USE) - MySQL
Void cAdo6Dlg::OnSelchangeListBaza()
{
CString str;
m_tab.ResetContent();
if (m_baza.GetCurSel()<0)
{
MessageBox("База даних не вибрана!");
return;
}
m_baza.GetText(m_baza.GetCurSel(), str);
baza = str;
baza.MakeUpper();
str = "USE` "+ str +"`";
// Вибір БД (USE)
try
{
pConn->BeginTrans();
pConn->Execute((_bstr_t)str, 0, adCmdText);
pConn->CommitTrans();
}
catch(_com_error &ce)
{
pConn->RollbackTrans();
Doc->ErrMessage(ce);
return;
}
Structura_BD();
}
// Функція вибору бази даних MS ACCESS або файлу XML
// та створення об'єкту Connection
Void cAdo6Dlg::OnVibor_bd()
{
if(tip_bd==1)AccessOpen();
if(tip_bd==3)XMLOpen();
}
// Функція для відкриття БД MS ACCESS
Void cAdo6Dlg::AccessOpen()
{
CFileDialog OpenDialog (true, "", "",
OFN_FILEMUSTEXIST | OFN_HIDEREADONLY,
"Microsoft Access Database (*.mdb) | *.mdb |");
if (OpenDialog.DoModal()! = IDOK) return;
CString str_con = OpenDialog.GetPathName();
str_con.MakeLower();
show(SW_SHOW,1);
m_editquery.SetWindowText("");
int g;
while(1)
{
g = str_con.Find('\\',0);
if (g == -1) break;
str_con = str_con.Mid(g+1);
}
baza = str_con;
baza.MakeUpper();
GetDlgItem(IDC_STATIC1)->SetWindowText(
OpenDialog.GetPathName());
// Робота з файлом .mdb (ACCESS)
str_con = ("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=");
str_con += OpenDialog.GetPathName();
str_con += ";";
MessageBox(str_con, "Початковий рядок підключення", MB_ICONINFORMATION);
// Відв'язування
m_datagrid1.SetRefDataSource(0);
try
{
// Виклик функції підключення
Doc->Connect_Baza(str_con);
}
catch(_com_error &ce)
{
Doc->ErrMessage(ce);
return;
}
MessageBox(pConn->GetConnectionString(),
"Повний рядок підключення", MB_ICONINFORMATION);
Structura_BD(); // виведення структури БД
}
//Функція для відкриття XML-файлу