DataSet ve DataView nesnelerimizi Modül seviyesinde tanımlıyoruz Dim das1 As New DataSet Dim dav1 As New DataView
Form Load eventinde Combobox1i değişikliklere karşı denetleyecek boolean değişken Dim bolViewSetInFormLoad As Boolean
Country değişkenini Public olarak tanımlıyoruz Böylece birinci formdan değer atayabileceğiz Public Country As String
Sub Populate()
Northwind bağlantısı Dim cnn1 As SqlConnection = _ New SqlConnection("Data Source=(local);" & _ "Integrated Security=SSPI;" & _ "Initial Catalog=northwind")
udpCitiesInCustomersCountry adlı SPyi çalıştıracak Command nesnesini oluşturuyoruz Dim cmd1 As SqlCommand = _ New SqlCommand("udpCitiesInCustomersCountry", cnn1) cmd1.CommandType = CommandType.StoredProcedure
SqlDbType ile Command için parametre tanımlıyor ve Country adlı public değişkene birinci formdan gelen değere bağlı olarak değer atıyoruz Dim prm1 As SqlParameter = _ cmd1.Parameters.Add("@country", SqlDbType.NVarChar, 15) prm1.Value = Country
Oluşturduğumuz command nesnesini DataAdapter nesnesi için SelectCommand özelliğine atıyoruz Dim dap1 As SqlDataAdapter = New SqlDataAdapter dap1.SelectCommand = cmd1 cnn1.Open()
Fill the data set das1 with the data adapter dap1; the Fill method populates the data set with the udpCitiesInCustomersCountry result set and names the resulting datatable CitiesInCountry.
DataAdapterı kullanarak Oluşturduğumuz DataSetin içinde CitiesnCountry adlı bir DataTable oluşturuyor ve sonuç kümesini bu DataTablea aktarıyoruz dap1.Fill(das1, "CitiesInCountry")
Command nesnesinin Commandtext özelliğine bir SQL ifadesi atıyor, CommandType özelliğinin değerini Text olarak değiştiriyor ve yeni sorgu için hazır hale getiriyoruz cmd1.CommandText = "SELECT CustomerID, " & _ "ContactName, Phone, City " & _ "FROM Customers " & _ "WHERE Country = " & Country & "" Eklediğimiz parametreyi kaldırıyoruz cmd1.Parameters.Remove(prm1) cmd1.CommandType = CommandType.Text dap1.SelectCommand = cmd1
Yeni SQL ifadesinin sonucunda dönen sonuç kümesini CustomersInCountry adlı ikinci DataTable nesnesine aktarıyoruz dap1.Fill(das1, "CustomersInCountry")
Bağlantıyı kapatıyoruz cnn1.Close()
End Sub
Private Sub Form4_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Form yüklenirken Populate adlı prosedürü çalıştırıyoruz Populate()
Comboboxı DataSet içindeki birinci DataTablea bağlıyoruz. ComboBoxın displaymember ve valuemember değerlerini DataTabledaki birinci sütuna eşitliyoruz MsgBox(das1.Tables.Count) ComboBox1.DataSource = das1.Tables(0) ComboBox1.DisplayMember = _ das1.Tables(0).Columns(0).ColumnName ComboBox1.ValueMember = _ das1.Tables(0).Columns(0).ColumnName
CustomersInCountry DataTable nesnesine bağlı olarak bir DataView nesnesi oluşturuyoruz ve form açıldığında ComboBoxtaki seçili değer bağlı olarak filtreleme yapıyoruz dav1 = New DataView(das1.Tables("CustomersInCountry")) Dim strFilter = "City = " & ComboBox1.SelectedValue & "" dav1.RowFilter = strFilter Form Load eventi DataViewin filtresini belirledikten sonra bolViewSetInFormLoad değişkeninin değerini varsayılan False değerinden True olarak değiştiriyoruz bolViewSetInFormLoad = True Metin kutularını DataViewdeki ilgili alanlara bağlıyoruz TextBox1.DataBindings.Add _ (New Binding("Text", dav1, "CustomerID")) TextBox2.DataBindings.Add _ (New Binding("Text", dav1, "ContactName")) TextBox3.DataBindings.Add _ (New Binding("Text", dav1, "Phone"))
Navigasyon butonlarını görüntüleyip görüntülemeyeceğimizi DataViewde yer alan satır sayısı belirleyecek ShowNavButtons(dav1.Count) Formun kapat butonu dışında bir yöntemle kapatılmasını önlemek için ControlBox,MinimizeBox ve Maximizebox özelliklerini false olarak belirliyoruz Me.MinimizeBox = False Me.MaximizeBox = False Me.ControlBox = False End Sub
Sub ShowNavButtons(ByVal NavNum As Integer) Eğer seçilen şehirde birden çok müşteri varsa Navigasyon butonlarını aktif hale getiriyoruz If NavNum > 1 Then Button1.Visible = True Button2.Visible = True Button3.Visible = True Button4.Visible = True Else Button1.Visible = False Button2.Visible = False Button3.Visible = False Button4.Visible = False End If End Sub Private Sub ComboBox1_SelectedIndexChanged _ (ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles ComboBox1.SelectedIndexChanged ComboBoxta yapılacak seçime bağlı olarak DataViewin Filtresini güncelliyoruz If bolViewSetInFormLoad = True Then Dim strFilter = "City = " & _ ComboBox1.SelectedValue & "" dav1.RowFilter = strFilter End If Navigasyon butonlarını görüntüleyip görüntülemeyeceğimizi DataViewde yer alan satır sayısı belirleyecek ShowNavButtons(dav1.Count) End Sub
### Navigasyon Butonları ### Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Birinci kayıt görüntülenir Me.BindingContext(dav1).Position _ = Me.BindingContext(dav1).Position.MinValue End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click Bir önceki kayıt Me.BindingContext(dav1).Position -= 1 End Sub Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click Bir sonraki kayıt Me.BindingContext(dav1).Position += 1 End Sub Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click Son kayıt görüntülenir Me.BindingContext(dav1).Position _ = Me.BindingContext(dav1).Position.MaxValue End Sub
### kapat ### Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click Uygulamayı Kapat Application.Exit() End Sub |