CDatabase MyDB;
CRecordset cr;
MyDB.Open("MyDB",FALSE,TRUE,"ODBC;UID=user;PWD=1234;"); //открываем бд
cr.Open(CRecordset::forwardOnly,"SELECT * FROM NeoTbl;",CRecordset::readOnly); //так можно открыть таблицу
ODBC, Tree
Имеем приложение MFC, открываем мод. диалоговое окно, там есть дерево,
нужно, с использованием ODBC подцепить БД к дереву...
Что на ковырял?
Код:
Мне нужно, что бы в дереве была видна вся БД, а не отдельная таблица...
Код:
cr.m_pDatabase = &MyDB;
Код:
CDBVariant var_Parent, var_Elem, var_ElemName;
while(!cr.IsEOF())
{
cr.GetFieldValue("parent_id", var_Parent);
cr.GetFieldValue("node_id", var_Elem);
cr.GetFieldValue("node_name", var_ElemName);
// и строим TreeView
cr.MoveNext();
}
while(!cr.IsEOF())
{
cr.GetFieldValue("parent_id", var_Parent);
cr.GetFieldValue("node_id", var_Elem);
cr.GetFieldValue("node_name", var_ElemName);
// и строим TreeView
cr.MoveNext();
}
Спасибо! Буду разбираться...
Всё понятно! Как конектиться с БД, как создавать дерево,но одного не могу понять...Например: есть таблица
---------------
Name | ID |
----------------
Иванов | 100 |
Петров | 100 |
Сидоров| 100 |
Козлов | 200 |
Соответственно получили дерево:
|100+
| |---Иванов
|
|100+
| |---Петров
|
|100+
| |---Сидоров
|
|200+
|---Козлов
Млин. Мне надо, чтобы дерево было создано по ID т.е.:
|100+
| |---Иванов
| |---Петров
| |---Сидоров
|
|200+
|---Козлов
Что сделано, создал структуру:
Код:
typedef struct
{
int ID;
CString Name;
}St;
St* p;
p = new st[1000];
{
int ID;
CString Name;
}St;
St* p;
p = new st[1000];
Лопачю её массивом и потом вываливаю на дерево.
Вроде бы всё элементарно.Но понять не могу.
Ткните носом плиз!!!
Так перед добавлением нового узла нужно проверить, есть ли в дереве уже узел с таким же ID, если да - добавлять Child, если нет - Root
Если я правильно понял, то в моём случае надо воспользоваться следующим кодом в цикле:
Код:
HTREEITEM hCurSel = pCtrl->GetNextItem(TVI_ROOT, TVGN_CARET);
CString tmpitem = m_TreeBase.GetItemText(hCurSel);
NEO = m_TreeBase.InsertItem(*MStrSig[n].NEO.m_pstring );
CString tmpitem = m_TreeBase.GetItemText(hCurSel);
NEO = m_TreeBase.InsertItem(*MStrSig[n].NEO.m_pstring );