Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ODBC, Tree

34K
12 марта 2009 года
romikiz
28 / / 26.11.2008
Всем привет!
Имеем приложение MFC, открываем мод. диалоговое окно, там есть дерево,
нужно, с использованием ODBC подцепить БД к дереву...
Что на ковырял?

 
Код:
CDatabase MyDB;
CRecordset cr;
MyDB.Open("MyDB",FALSE,TRUE,"ODBC;UID=user;PWD=1234;"); //открываем бд
cr.Open(CRecordset::forwardOnly,"SELECT * FROM NeoTbl;",CRecordset::readOnly);  //так можно открыть таблицу


Мне нужно, что бы в дереве была видна вся БД, а не отдельная таблица...
11
12 марта 2009 года
oxotnik333
2.9K / / 03.08.2007
для CRecordset cr; надо указать с какой базой будет работать
 
Код:
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();
}
пример построения дерева в Билдере
34K
12 марта 2009 года
romikiz
28 / / 26.11.2008
Спасибо! Буду разбираться...
34K
19 мая 2009 года
romikiz
28 / / 26.11.2008
Решил поднять эту тему снова...т.к. сам судя по всему сам я догнать не смогу...
Всё понятно! Как конектиться с БД, как создавать дерево,но одного не могу понять...Например: есть таблица
---------------
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];

Лопачю её массивом и потом вываливаю на дерево.
Вроде бы всё элементарно.Но понять не могу.
Ткните носом плиз!!!
14
19 мая 2009 года
Phodopus
3.3K / / 19.06.2008
Так перед добавлением нового узла нужно проверить, есть ли в дереве уже узел с таким же ID, если да - добавлять Child, если нет - Root
34K
20 мая 2009 года
romikiz
28 / / 26.11.2008
Спасибо за подсказку!
Если я правильно понял, то в моём случае надо воспользоваться следующим кодом в цикле:
 
Код:
HTREEITEM hCurSel = pCtrl->GetNextItem(TVI_ROOT, TVGN_CARET);
CString tmpitem = m_TreeBase.GetItemText(hCurSel);
NEO = m_TreeBase.InsertItem(*MStrSig[n].NEO.m_pstring );
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог