Druhou variantou řešení je použít standardní jazyk SQL. Tuto variantu si ukážeme nyní. Ukázkový příklad je možné stáhnout zde .
Použité objekty je možné vidět na obr. .
Programový kód je vidět na obr. .
Celý programový kód je následující:
Public Class frm3TabulkySQL
Dim tabulka As DataTable
Dim dsVyrobkyJoin As New DataSet("VyrobkyJoin")
Dim dtVyrobkyJoin As New DataTable
Private Sub TblZakaznikBindingNavigatorSaveItem_Click(sender As System.Object, e As System.EventArgs) Handles TblZakaznikBindingNavigatorSaveItem.Click
Me.Validate()
Me.TblZakaznikBindingSource.EndEdit()
Me.TableAdapterManager.UpdateAll(Me.DsVzor)
End Sub
Private Sub frm3TabulkySQL_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'TODO: This line of code loads data into the 'DsVzor.tblZakaznik' table. You can move, or remove it, as needed.
Me.TblZakaznikTableAdapter.Fill(Me.DsVzor.tblZakaznik)
End Sub
Private Sub TblZakaznikBindingSource_PositionChanged(sender As Object, e As System.EventArgs) Handles TblZakaznikBindingSource.PositionChanged
NactiDotaz()
dgvVyrobky.DataSource = dtVyrobkyJoin
'zobrazeni nazvu sloupecku
dgvVyrobky.Columns(0).HeaderText = "Číslo výrobku"
dgvVyrobky.Columns(1).HeaderText = "Název výrobku"
dgvVyrobky.Columns(2).HeaderText = "Název zákazníka"
End Sub
Private Sub NactiDotaz()
Dim dbConn As New OleDb.OleDbConnection(TblZakaznikTableAdapter.Connection.ConnectionString)
' Create a data adapter to retrieve records from db
Dim strSELECT As String
strSELECT = "SELECT tblVyrobek.Cislo_vyrobku, tblVyrobek.Nazev_vyrobku, tblVyrobek.Stav_vyrobku, tblVyrobek.Koment " & _
"FROM tblVyrobek INNER JOIN tblPropojovaciZ_V ON tblVyrobek.Cislo_vyrobku = tblPropojovaciZ_V.Cislo_vyrobku " & _
"WHERE (((tblPropojovaciZ_V.Identifikacni_cislo_zakaznika)='" & TblZakaznikBindingSource.Current("Identifikacni_cislo_zakaznika") & "'))"
dsVyrobkyJoin.Clear()
Dim daVyrobkyJoin As New OleDb.OleDbDataAdapter(strSELECT, dbConn)
' Fill the dataset
daVyrobkyJoin.Fill(dsVyrobkyJoin)
dtVyrobkyJoin = dsVyrobkyJoin.Tables(0) 'nactena tabulka z dotazu
dbConn.Close()
dbConn.Dispose()
End Sub
End Class
Nejdůležitější části kódu:
V proceduře TblZakaznikBindingSource_PositionChanged je procedura obsahující SQL dotaz pro propojení 3 tabulek.
Použitý dotaz
strSELECT = "SELECT tblVyrobek.Cislo_vyrobku, tblVyrobek.Nazev_vyrobku, tblVyrobek.Stav_vyrobku, tblVyrobek.Koment " & _ "FROM tblVyrobek INNER JOIN tblPropojovaciZ_V ON tblVyrobek.Cislo_vyrobku = tblPropojovaciZ_V.Cislo_vyrobku " & _ "WHERE (((tblPropojovaciZ_V.Identifikacni_cislo_zakaznika)='" & TblZakaznikBindingSource.Current("Identifikacni_cislo_zakaznika") & "'))" |