Модераторы: diadiavova, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Привязка TreeView к базе данных, возможно ли привязать 
:(
    Опции темы
Andruxa28
Дата 25.1.2011, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.1.2011

Репутация: нет
Всего: нет



Здравствуйте!
Возникла проблемка отображения данных из связанных таблиц БД Access
Пришла мысль вывести используя TreeView, но не знаю возможно ли вообще это.
Исходные данные:
имеем вот это
user posted image
хочу сделать вот так
user posted image
если возможно, то помогите реализовать
а если нет, подкиньте идею, какие еще есть варианты вывода данной информации
Спасибо!


PM MAIL WWW   Вверх
diadiavova
Дата 26.1.2011, 00:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Andruxa28 @  25.1.2011,  23:48 Найти цитируемый пост)
но не знаю возможно ли вообще это.

А почему нет? Двойной цикл, во внешнем обходишь таблицу со странами и для каждой создаешь узел дерева, во внутреннем - запрашиваешь из базы города, находящиеся в текущей стране, создаешь для них узлы и добавляешь их в узел страны. В чем затруднение то? smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Andruxa28
Дата 26.1.2011, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.1.2011

Репутация: нет
Всего: нет



Цитата(diadiavova @  26.1.2011,  00:10 Найти цитируемый пост)
В чем затруднение то? 

да собственно затруднение в выше сказанном
вот смотри  к базе подключился
Код

        Dim cmdString As String = "SELECT * FROM Страны"
        Dim conStr As String _
        = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\db1.mdb"
        Dim myConnection As OleDbConnection = New OleDbConnection(conStr)
        Dim tblName = "Страны"
        Try
            myConnection.Open()
            Dim da As OleDbDataAdapter _
            = New OleDbDataAdapter(cmdString, myConnection)
            Dim dataSet1 As DataSet = New DataSet()
            da.Fill(dataSet1, tblName)

а вот результат выборки "SELECT * FROM Страны" как связать с узлами дерева?
или меня вообще не в ту степь понесло..
PM MAIL WWW   Вверх
diadiavova
Дата 26.1.2011, 01:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Andruxa28 @  26.1.2011,  00:53 Найти цитируемый пост)
а вот результат выборки "SELECT * FROM Страны" как связать с узлами дерева?

Никак не связать, придется делать "ручками". Тривью не приспособлен для связывания с данными, так что - старые добрые циклы тебе в помощь.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Andruxa28
Дата 26.1.2011, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.1.2011

Репутация: нет
Всего: нет



Код

 For i = 0 To dataSet1.Tables("Страны").Rows.Count - 1
                TreeView1.Nodes.Add(dataSet1.Tables("Страны").Rows(i).Item("Страна"))
            Next

узлы "страны" получилось добавить
а вот на "городах" застрял   smile 

PM MAIL WWW   Вверх
diadiavova
Дата 26.1.2011, 01:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Ну я же объяснил, что нужен вложенный цикл и лучше использовать форич вместо фор.
Код

For Each countryrow In dataSet1.Tables("Страны").Rows
    Dim countryNode = TreeView1.Nodes.Add(countryrow.Item("Страна"))
    For Each cityrow in dataset1.Tables("Города").Rows
        If cityrow("СтранаИд") = countryrow("СтранаИд") Then
            countrynode.Nodes.Add(cityrow.Item("Город"))
        End If
    Next    
Next

Код примерный, но думаю понятно что к чему.

Это сообщение отредактировал(а) diadiavova - 27.1.2011, 01:26


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
Andruxa28
Дата 26.1.2011, 02:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 11.1.2011

Репутация: нет
Всего: нет



та это я понял 
в предыдущем посту неправильно написал. Сори
вот при попытке добавления "городов"
получаю вот такую вот ошибку  
Код

Сбой при разрешении перегрузки: ни один Public "Add" нельзя вызвать с данными аргументами:   
 'Public Overrides Function Add(node As System.Windows.Forms.TreeNode) As Integer':        
 Соответствующий параметру "node" аргумент нельзя преобразовать из "DBNull" в "TreeNode".     
'Public Overrides Function Add(text As String) As System.Windows.Forms.TreeNode':        
 Соответствующий параметру "text" аргумент нельзя преобразовать из "DBNull" в "String".

вот с этим и запара

Это сообщение отредактировал(а) Andruxa28 - 26.1.2011, 02:26
PM MAIL WWW   Вверх
diadiavova
Дата 26.1.2011, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 8
Всего: 142



Цитата(Andruxa28 @  26.1.2011,  02:25 Найти цитируемый пост)
 Соответствующий параметру "text" аргумент нельзя преобразовать из "DBNull" в "String".

Значит у тебя нет такого значения в таблице.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0782 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.