Dobry den, mam problem s relacemi, respektive s jejich naslednym zobrazenim. Mam v SQL dve tabulky: 1. PROVOZ - PROVOZ_ID, PROVOZ_POZNAMKA 2. STAVBA - STAVBA_ID, PROVOZ_ID, STAVBA_POZNAMKA Jsou v relaci 1:N pres PROVOZ_ID. Programove to resim takto:
Private SqlDA_PROVOZ As SqlDataAdapter ' DataAdapter pro tabulku PROVOZ
Private SqlDA_STAVBA As SqlDataAdapter ' DataAdapter pro tabulku STAVBA
Private DS_Pridat As DataSet ' DataSet pro tento formular
'1. pridani SqlDA_PROVOZ
SqlDA_PROVOZ = New SqlDataAdapter
SqlDA_PROVOZ.TableMappings.Add("PROVOZ", "PROVOZ")
cmd = New SqlCommand("SELECT * FROM PROVOZ", SqlConnection)
SqlDA_PROVOZ.SelectCommand = cmd
'2. pridani SqlDA_STAVBA
SqlDA_STAVBA = New SqlDataAdapter
SqlDA_STAVBA.TableMappings.Add("STAVBA", "STAVBA")
cmd = New SqlCommand("SELECT * FROM STAVBA", SqlConnection)
SqlDA_STAVBA.SelectCommand = cmd
SqlDA_PROVOZ.Fill(DS_Pridat, "PROVOZ")
SqlDA_STAVBA.Fill(DS_Pridat, "STAVBA")
' PRIDANI RELACI MEZI TABULKAMI
Dim relation As DataRelation
Dim dataColumn1, dataColumn2 As DataColumn
'1. relace mezi PROVOZ -> STAVBA
dataColumn1 = DS_Pridat.Tables("PROVOZ").Columns("PROVOZ_ID")
dataColumn2 = DS_Pridat.Tables("STAVBA").Columns("PROVOZ_ID")
relation = New DataRelation("PROVOZ_with_STAVBA", dataColumn1, dataColumn2)
DS_Pridat.Relations.Add(relation)
zavedl jsem onu relaci a ocekaval, ze po nastaveni ComboBox, ktery zobrazuje vsechny PROVOZY se mi po vybrani jednoho provozu do dalsiho ComboBoxu vypisi pouze STAVBY, ktere budou v relaci s provozy:
With Me
' Nastaveni filtru u pridani zarizeni
.CB_FiltrProvoz.DataSource = DS_Pridat
.CB_FiltrProvoz.DisplayMember = "PROVOZ.PROVOZ_ID"
.CB_FiltrProvoz.DataBindings.Add("Tag", DS_Pridat, "PROVOZ.PROVOZ_ID")
.CB_FiltrProvoz.ValueMember = "PROVOZ.PROVOZ_ID"
.CB_FiltrStavba.DataSource = DS_Pridat
.CB_FiltrStavba.DisplayMember = "STAVBA.STAVBA_ID"
.CB_FiltrStavba.DataBindings.Add("Tag", DS_Pridat, "STAVBA.STAVBA_ID")
.CB_FiltrStavba.ValueMember = "STAVBA.PROVOZ_ID"
.CB_FiltrStavba.SelectedValue = "PROVOZ.PROVOZ_ID"
End With
Ale to bohuzel nejde, nebo spis mam problem s tim, jak spravne ty dva ComboBoxy nastavit. Zkusil jsem jeste pridat proceduru:
Private Sub CB_FiltrProvoz_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CB_FiltrProvoz.SelectedIndexChanged
' a zde jsem se pokousel nastavovat jak Selected Value, tak i neco jineho, ale naprosto bez uspechu.
End Sub
Jeste nutno poznamenat, ze PROVOZ_ID a STAVBA_ID jsou typu TEXT a jsou jednoznacne urceny, takze slouzi jako primarni klice. Napadlo me to udelat pres SelectCommand s tim, ze v nem nebudu vybirat vsechny polozky, ale pouze takove, kde se budou rovnat provoz_id, ale zajimalo by me, zda to nejde nejak rychleji :-) Dekuju moc :-)
|