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

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-файлу

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