VB.Net Minimum Kod

blazedanger35

Doçent
Katılım
3 Nisan 2008
Mesajlar
609
Reaksiyon puanı
3
Puanları
0
Merhabalar , vb.net uygulamamda bir formumda aynı tanımlamaları veya işlemleri tekrar tekrar yapıyorum.
Kodlarımın dökümü burada.
Bunları nasıl minimize ederim ?

Kod:
Imports System.Data.OleDbPublic Class Veritabani
    Private Sub Veritabani_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim sqlliste As String = "select * from Liste order by ID"
        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        baglan.Open()
        da.Fill(ds, "Liste")
        VeritabaniBindingSource.DataSource = ds
        VeritabaniBindingSource.DataMember = "Liste"
        VeritabaniDataGridView.DataSource = VeritabaniBindingSource
        VeritabaniDataGridView.Columns("Fragman").Visible = False
        VeritabaniDataGridView.RowHeadersVisible = False
        VeritabaniDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
        baglan.Close()
        LblDurum.Text = "Sisteme Kayıtlı Film Sayısı: " & VeritabaniBindingSource.Count
        Me.Text = "Film Veritabanı"
        ara.Focus()
    End Sub
    Private Sub ara_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ara.TextChanged
        If RBFilm.Checked = True Then
            If ara.Text.Trim = "" Then
                VeritabaniBindingSource.Filter = ""
            Else
                VeritabaniBindingSource.Filter = String.Format("Film Like '" & ara.Text) & "*'"
            End If


        ElseIf RBOyuncu.Checked = True Then
            Try
                If ara.Text = "" Then
                    Veritabani_Load(sender, e)


                Else
                    'Dim sqlaccess As String = "SELECT DISTINCT Liste.ID, Liste.Film, Liste.Tur, Liste.Sure, Liste.Yili, Liste.IMDB, Liste.Dil, Liste.Aciklama, Liste.Medya, Liste.Fiyat, Liste.Stok, Liste.Fragman"
                    'sqlaccess += " FROM Oyuncu INNER JOIN (Liste INNER JOIN FilmOyuncu ON Liste.ID = FilmOyuncu.Film) ON Oyuncu.ID = FilmOyuncu.Oyuncu"
                    Dim sqloyuncu As String = "SELECT DISTINCT Liste.ID, Liste.Film, Liste.Tur, Liste.Sure, Liste.Yili, Liste.IMDB, Liste.Dil, Liste.Aciklama, Liste.Medya, Liste.Fiyat, Liste.Stok, Liste.Fragman,Oyuncu.Ad_Soyad FROM ((Oyuncu INNER JOIN FilmOyuncu ON Oyuncu.ID = FilmOyuncu.Oyuncu) INNER JOIN Liste ON FilmOyuncu.Film = Liste.ID) WHERE (Oyuncu.Ad_Soyad LIKE '" & ara.Text & "%')"
                    '(Oyuncu.Ad_Soyad LIKE ? + '%')" // Visual Studio Query si ile çalışıyor.
                    Dim da As New OleDbDataAdapter(sqloyuncu, baglan)
                    Dim ds As New DataSet
                    baglan.Open()
                    da.Fill(ds, "Liste")
                    VeritabaniBindingSource.DataSource = ds
                    VeritabaniBindingSource.DataMember = "Liste"
                    VeritabaniDataGridView.DataSource = VeritabaniBindingSource
                    VeritabaniDataGridView.Columns.Remove("Ad_Soyad")
                End If
                VeritabaniDataGridView.RowHeadersVisible = False
                VeritabaniDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
                baglan.Close()
            Catch ex As Exception
            End Try
        ElseIf RBYonetmen.Checked = True Then
            Try
                Dim sqlyonetmen As String = "SELECT        Liste.ID, Liste.Film, Liste.Tur, Liste.Sure, Liste.Yili, Liste.IMDB, Liste.Dil, Liste.Aciklama, Liste.Medya, Liste.Fiyat, Liste.Stok, Liste.Fragman,Yonetmen.Yonetmen FROM (Liste INNER JOIN Yonetmen ON Liste.ID = Yonetmen.ID) WHERE (Yonetmen.Yonetmen LIKE '" & ara.Text & "%')"
                Dim da As New OleDbDataAdapter(sqlyonetmen, baglan)
                Dim ds As New DataSet
                baglan.Open()
                da.Fill(ds, "Liste")
                VeritabaniBindingSource.DataSource = ds
                VeritabaniBindingSource.DataMember = "Liste"
                VeritabaniDataGridView.DataSource = VeritabaniBindingSource
                VeritabaniDataGridView.Columns.Remove("Yonetmen")
                VeritabaniDataGridView.RowHeadersVisible = False
                VeritabaniDataGridView.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill
                baglan.Close()
            Catch ex As Exception
            End Try
        ElseIf RBTur.Checked = True Then
            VeritabaniBindingSource.Filter = String.Format("Tur Like '" & ara.Text) & "*'"
        ElseIf RBDil.Checked = True Then
            VeritabaniBindingSource.Filter = String.Format("Dil Like '" & ara.Text) & "*'"
        End If
    End Sub








    Private Sub RBFilm_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBFilm.CheckedChanged
        ara.Focus()
        Dim sqlliste As String = "select Film from Liste"
        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        baglan.Open()
        da.Fill(ds, "Liste")
        Dim col As New AutoCompleteStringCollection
        Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            col.Add(ds.Tables(0).Rows(i)("Film").ToString())
        Next
        ara.AutoCompleteSource = AutoCompleteSource.CustomSource
        ara.AutoCompleteCustomSource = col
        ara.AutoCompleteMode = AutoCompleteMode.Suggest
        baglan.Close()
    End Sub


    Private Sub RBOyuncu_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBOyuncu.CheckedChanged
        ara.Focus()
        Dim sqlliste As String = "select Ad_Soyad from Oyuncu"
        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        baglan.Open()
        da.Fill(ds, "Liste")
        Dim col As New AutoCompleteStringCollection
        Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            col.Add(ds.Tables(0).Rows(i)("Ad_Soyad").ToString())
        Next
        ara.AutoCompleteSource = AutoCompleteSource.CustomSource
        ara.AutoCompleteCustomSource = col
        ara.AutoCompleteMode = AutoCompleteMode.Suggest
        baglan.Close()
    End Sub


    Private Sub RBYonetmen_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBYonetmen.CheckedChanged
        ara.Focus()
        Dim sqlliste As String = "select Yonetmen from Yonetmen"
        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        baglan.Open()
        da.Fill(ds, "Liste")
        Dim col As New AutoCompleteStringCollection
        Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            col.Add(ds.Tables(0).Rows(i)("Yonetmen").ToString())
        Next
        ara.AutoCompleteSource = AutoCompleteSource.CustomSource
        ara.AutoCompleteCustomSource = col
        ara.AutoCompleteMode = AutoCompleteMode.Suggest
        baglan.Close()
    End Sub


    Private Sub RBTur_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBTur.CheckedChanged
        ara.Focus()
        Dim sqlliste As String = "select Tur from Tur"
        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        baglan.Open()
        da.Fill(ds, "Liste")
        Dim col As New AutoCompleteStringCollection
        Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            col.Add(ds.Tables(0).Rows(i)("Tur").ToString())
        Next
        ara.AutoCompleteSource = AutoCompleteSource.CustomSource
        ara.AutoCompleteCustomSource = col
        ara.AutoCompleteMode = AutoCompleteMode.Suggest
        baglan.Close()
    End Sub


    Private Sub RBDil_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RBDil.CheckedChanged
        ara.Focus()
        Dim sqlliste As String = "select Dil from Dil"
        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        baglan.Open()
        da.Fill(ds, "Liste")
        Dim col As New AutoCompleteStringCollection
        Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            col.Add(ds.Tables(0).Rows(i)("Dil").ToString())
        Next
        ara.AutoCompleteSource = AutoCompleteSource.CustomSource
        ara.AutoCompleteCustomSource = col
        ara.AutoCompleteMode = AutoCompleteMode.Suggest
        baglan.Close()
    End Sub


    Private Sub Veritabani_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Oturum.Show()
    End Sub
End Class


Tekrar tekrar Data Adapter , Dataset , AutoComplete kullandım.
Bunları üstte tanımlayarak , altta bir click veya checked change olayında bunları tekrar tekrar yazacağıma yukarıya nasıl değer gönderebilirim ?

Mesela , film radio button u seçildiğinde da,ds,autocomplete tanımlamadan sadece sql yazarak yukarıdaki işleri yaptırmak gibi vs.
 

eSa

Dekan
Katılım
5 Kasım 2011
Mesajlar
9,782
Reaksiyon puanı
352
Puanları
263
Bu tip tekrarlanan işlemler için sub ve function lar oluşturulur. Senin uygulamana göre

Kod:
private sub alan_dolur(sqlliste as string,alan as string)


        Dim da As New OleDbDataAdapter(sqlliste, baglan)
        Dim ds As New DataSet
        baglan.Open()
        da.Fill(ds, "Liste")
        Dim col As New AutoCompleteStringCollection
        Dim i As Integer
        For i = 0 To ds.Tables(0).Rows.Count - 1
            col.Add(ds.Tables(0).Rows(i)(ALAN).ToString())
        Next
        ara.AutoCompleteSource = AutoCompleteSource.CustomSource
        ara.AutoCompleteCustomSource = col
        ara.AutoCompleteMode = AutoCompleteMode.Suggest
        baglan.Close()


end sub

kullanırken
Kod:
alan_doldur  "select Yonetmen from Yonetmen", "Yonetmen"
gibi. .net im olmadığı için bu kod hata verebilir ancak, sana yol gösterecektir.

Kolay gelsin.
 

totleben

Asistan
Katılım
25 Mayıs 2007
Mesajlar
291
Reaksiyon puanı
0
Puanları
16
O fonksiyonuda tekrar tekrar yazmak istemiyorsanız LinqToSql veya Entity Framework öğrenmeniz işlerinizi baya hızlandıracaktır.
 

blazedanger35

Doçent
Katılım
3 Nisan 2008
Mesajlar
609
Reaksiyon puanı
3
Puanları
0
Malesef linktosql kullanamıyorum.
Projemi VS2005 te ve .Net Framework 2 ile yapmak zorundayım.
Eski kafalı hocalar..
 
Üst