Связанные комбобокс :?:

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

Andruxa28
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 09.02.2011 (Ср) 5:21

Связанные комбобокс :?:

Сообщение Andruxa28 » 25.02.2011 (Пт) 20:43

Здравствуйте ув. форумчане! Прошу вашей помощи...
Дано: форма с двумя combobox'ами, БД access с двумя связанными таблицами.("Категории" & "Типы")
Нужно: в combo1 получить данные из столбца "категория" таблицы "категории" а в combo2 соответственно из столбца "тип" таблицы "типы" .
чтоб при выборе в combo1 определенной категории в combo2 были только типы соответствующие этой категории..
Код: Выделить всё
Dim StrCon As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=С:\DataBase.mdb")
    Dim Select2 As String = "SELECT   * FROM Категории"
    Dim comand2 As New OleDbCommand(Select2, StrCon)
    Dim adapter2 As New OleDbDataAdapter(comand2)
    Dim AllTables2 As New DataSet("AllData")
    Dim comanbuilder2 As New OleDbCommandBuilder(adapter2)
    adapter2.Fill(AllTables2, "Категории")
    ComboBox1.DataSource = AllTables2.Tables("Категории")
    ComboBox1.DisplayMember = ("Категория")
    ComboBox1.ValueMember = "id категории"

вот таким способом заполнил combo1, а вот со вторым нескладуха...... :?: :?:
выручайте дельным советом..
Заранее премного благодарен!

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Re: Связанные комбобокс :?:

Сообщение Dmitriy2003 » 25.02.2011 (Пт) 22:40


Andruxa28
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 09.02.2011 (Ср) 5:21

Re: Связанные комбобокс :?:

Сообщение Andruxa28 » 25.02.2011 (Пт) 22:59


это я уже читал.. но ничего по моей проблеме там не нашел((
:(

sin108
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 18.05.2011 (Ср) 19:49

Re: Связанные комбобокс :?:

Сообщение sin108 » 18.05.2011 (Ср) 19:59

здесь 3 связанных комбобокса.
1. задаем функции, выдающие список-все через код, me.table - это типизированная таблица, для нетипизированной немного по другому, но принцип тот же

Код: Выделить всё
Public Function List_customer() As List(Of String)   'дает список
      If Not started Then Me.Start()
      Dim list As New List(Of String)
      For i As Integer = 0 To Me.Table.Rows.Count - 1
         Dim itm$ = (CStr(Me.Table.Rows(i)(Me.Table.ВодопотребительColumn)))

         If Not list.Contains(itm) Then
            list.Add(CStr(Me.Table.Rows(i)(Me.Table.ВодопотребительColumn)))
         End If
      Next
      Return list
   End Function
   Public Function List_Type1(ByVal customer$) As List(Of String)
      Dim list As New List(Of String)

      For i As Integer = 0 To Me.Table.Rows.Count - 1
         Dim itm$
         If Not IsDBNull(Me.Table.Rows(i)(Me.Table.Тип_водопотребителяColumn)) Then
            itm$ = (CStr(Me.Table.Rows(i)(Me.Table.Тип_водопотребителяColumn)))
            If Not list.Contains(itm) Then
               If CStr(Me.Table.Rows(i)(Me.Table.ВодопотребительColumn)) = customer Then
                  list.Add(CStr(Me.Table.Rows(i)(Me.Table.Тип_водопотребителяColumn)))
               End If
            End If
         Else : itm = Nothing
         End If
      Next

      Return list
   End Function
   Public Function List_Type2(ByVal customer$, ByVal type1$) As List(Of String)
      Dim list As New List(Of String)

      For i As Integer = 0 To Me.Table.Rows.Count - 1
         Dim itm$
         If Not IsDBNull(Me.Table.Rows(i)(Me.Table.Тип2_водопотребителяColumn)) Then
            itm$ = (CStr(Me.Table.Rows(i)(Me.Table.Тип2_водопотребителяColumn)))
            If Not list.Contains(itm) Then

               If CStr(Me.Table.Rows(i)(Me.Table.ВодопотребительColumn)) = customer _
               And CStr(Me.Table.Rows(i)(Me.Table.Тип_водопотребителяColumn)) = type1 _
               Then
                  list.Add(CStr(Me.Table.Rows(i)(Me.Table.Тип2_водопотребителяColumn)))
               End If
            End If
         Else : itm = Nothing
         End If
      Next

      Return list
   End Function



На форму вешаем 3 комбобокса:

Код: Выделить всё
Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
      Me.ComboBox2.DataSource = Nothing
      Me.ComboBox2.DataSource = water.List_Type1(CStr(Me.ComboBox1.SelectedItem))
   End Sub

   Private Sub ComboBox2_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox2.SelectedIndexChanged
      Me.ComboBox3.DataSource = Nothing
      Me.ComboBox3.DataSource = water.List_Type2(CStr(Me.ComboBox1.SelectedItem), CStr(Me.ComboBox2.SelectedItem))

      
      
   End Sub

[Viper] :: Пользуйся тэгами CODE!

netdemon
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 179
Зарегистрирован: 04.09.2007 (Вт) 15:51

Re: Связанные комбобокс :?:

Сообщение netdemon » 25.06.2011 (Сб) 16:07

А ты не пробовал создавать запрос на выборку с внешней связью и его результаты связывать с боксом.?
Лишь разум потерянный бесповоротно мною. Наполнить может сердце мне тоской.
Нельзя обнять необъятное и впихнуть невпихуемое.


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 23

    TopList