Связывание двух DGV, заполненных данными из связанных таблиц - Visual Basic .NET
Формулировка задачи:
В общем задача такая, есть форма с двумя datagridview в splitcontainer-е. Datagridview заполняются из базы Access из двух связанных таблиц. И... в общем ничего не получается, datagridview пустые. Первоначально пробовал раздельно заполнять datagridview и для меня стало полной неожиданностью, что нельзя отдельно работать с datagridview. Попробовал как на MSDN описано. Прилагаю код. Соединение,DataSet и DataTable описаны и созданы заранее. В чем ошибка?
Листинг программы
- Sub DGVfillMat()
- Dim strQuery As String ' строка запроса
- Dim qSQL As OleDbCommand ' запрос
- Dim DA As OleDbDataAdapter ' обработчик запросов
- Dim BS As New BindingSource ' соеденитель datatable и datagrid
- Dim strQuery2 As String
- Dim qSQL2 As OleDbCommand
- Dim DA2 As OleDbDataAdapter
- Dim BS2 As New BindingSource
- strQuery = "SELECT * FROM SetMat ORDER BY [_Name] ASC"
- strQuery2 = "SELECT * FROM SetMatSelect ORDER BY [_Name] ASC"
- CN.ConnectionString = strConnect ' назначаем строку соединения
- qSQL = New OleDbCommand(strQuery, CN)
- qSQL2 = New OleDbCommand(strQuery2, CN) ' создаем запрос
- Try
- DT_SetMat.Reset()
- DT_SetMatSel.Reset() ' предварительно очищаем кэш таблицы
- CN.Open() ' открываем соединение
- qSQL.ExecuteNonQuery()
- qSQL2.ExecuteNonQuery() ' выполняем запрос
- Catch ex As Exception ' если ошибка
- MsgBox("Ошибка загрузки данных в таблицу!", MsgBoxStyle.Critical)
- Exit Sub
- Finally
- CN.Close() ' закрываем соединение
- End Try
- DA = New OleDbDataAdapter(qSQL)
- DA2 = New OleDbDataAdapter(qSQL2) ' получаем результат запроса
- DA.Fill(DS, "SetMat")
- DA2.Fill(DS, "SetMatSelect") ' отправляем результат в dataset
- ' создаем связь
- Dim relation As New DataRelation("DR", DT_SetMat.Columns(0), DT_SetMatSel.Columns(0))
- DS.Relations.Add(relation)
- DT_SetMat = DS.Tables("SetMat")
- DT_SetMatSel = DS.Tables("SetMatSelect")
- BS.DataSource = DS
- BS2.DataSource = DS ' связываем соеденитель с таблицей
- Me.DGV_Mat.DataSource = BS
- Me.DGV_SelMat.DataSource = BS2 ' связываем соеденитель с datagrid
- Me.DGV_Mat.DataMember = "SetMat"
- Me.DGV_SelMat.DataMember = "SetMatSelect"
- End Sub
Решение задачи: «Связывание двух DGV, заполненных данными из связанных таблиц»
textual
Листинг программы
- "SELECT * FROM SetMat ORDER BY [_Name] ASC"
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д