Disconnect Baglanti Ve Dataset İçerisindeki İki Tablo Arasında İlişki Oluşturma
Bu makalemizde Disconnected bağlantı ile Datasetimizin içindeki 2 tablo arasında ilişki kuracağız. Bunun için 1 adet ComboBox ve 2 adet DataGrid’e ihtiyacımız var. Bu araçları formumuza ekliyoruz.

Daha sonra Formun Load olayına yani form yüklendiğinde çalışacak olaya geçelim.
Kod bölümünde 2 adet DataTable oluşturuyoruz. Senaryomuz gereği bir adet Kategoriler ve bir adet’de Ürünler adında Table oluşturuyoruz.
Dim dt1 As New DataTable
dt1.TableName = "Kategoriler"
dt1.Columns.Add("KategoriID", GetType(Integer))
dt1.Columns.Add("Ad", GetType(String))
Dim dt2 As New DataTable
dt2.TableName = "Urunler"
dt2.Columns.Add("UrunID", GetType(Integer))
dt2.Columns.Add("Ad", GetType(String))
dt2.Columns.Add("Fiyat", GetType(Decimal))
dt2.Columns.Add("KategoriID", GetType(Integer))
Daha sonra Kategoriler tablomuzu Datarow’lar ile dolduruyoruz;
Dim r As DataRow
r = dt1.NewRow
r(0) = 1
r(1) = "Beyaz Eşya"
dt1.Rows.Add(r)
r = dt1.NewRow
r(0) = 2
r(1) = "Kırtasiye"
dt1.Rows.Add(r)
r = dt1.NewRow
r(0) = 3
r(1) = "Gıda"
dt1.Rows.Add(r)
Aşağıdaki kod bloğunda Random sınıfını kullanarak, kategorilerdeki her bir kategori için 200 adet ürün oluşturuyoruz ve bu ürünleri 100 ile 600 arasında fiyatlandırıp for next döngüsü ile ürünler adlı DataTable sınıfına dolduruyoruz.
Dim rr As New Random
For kactaneurunolustur As Integer = 1 To 200
r = dt2.NewRow
r(0) = x
r(1) = "Urun" & x
r(2) = rr.Next(100, 600)
r(3) = rr.Next(1, 4)
dt2.Rows.Add(r)
Next
Bir adet DataSet oluşturup bu DataTable sınıfındaki bütün kayıtları oluşturduğumuz DataSet sınıfının içerisine atıyoruz.
Dim ds As New DataSet
ds.Tables.Add(dt1)
ds.Tables.Add(dt2)
Şimdi sırada DataSet içindeki 2 tablo arasında ilişki kurmaya geldi.
ds.Relations.Add("rltUrunKategori", dt1.Columns(0), dt2.Columns(3)) 'datasetteki iki tablonun arasında ilişkiyi bu şekilde görüyoruz...
Me.DataGrid1.DataSource = dt1 'Kaynak olarak kategoriler tablosu gösteriliyor
Me.DataGrid2.DataSource = dt1
Me.DataGrid2.DataMember = "rltUrunKategori" 'datamember özelliği relation'ı gösterdiği için onun ilişkili olduğu tabloyu gösterir.
Me.ComboBox1.DataSource = dt1
Me.ComboBox1.DisplayMember = "Ad"
Me.ComboBox1.ValueMember = "KategoriID"

Yukarıda görüdüğünüz gibi DataSet sınıfı içindeki 2 tablo arasında disconnected bağlanti yöntemi ile ilişki kurduk.
Bir sonraki makalemizde Görüşmek üzere Hoşçakalın..
mustafasaygi@yahoo.com
MS