Skip to main content

AccessTr.neT


DataGridView Veri Güncelleme

DataGridView Veri Güncelleme

#7
Sayın atoz112;

Hocam vermiş olduğunuz kod sayesinde güncelleme işlemi sorunsuz bir şekilde yapmaktadır.

Veritabanı bölümünde Tablo ve Başvuru alanın aynı olmasından dolayı oluşan bir hata vardı onuda düzeltince bir sıkıntı kalmadı

Kodun son hali;
Try
           baglanti.Open()
           Dim sorgu As String
           For a = 0 To DataGridView1.RowCount - 1
               sorgu = "UPDATE donem SET donemler = '" & DataGridView1.Rows(a).Cells(1).Value.ToString() & "' where sira_numarasi=" & DataGridView1.Rows(a).Cells(0).Value.ToString() & ""
               Dim cmd As New OleDbCommand(sorgu, baglanti)
               cmd.ExecuteNonQuery()
           Next
           baglanti.Close()
       Catch ex As Exception
           If ex.Message = "Nesne başvurusu bir nesnenin örneğine ayarlanmadı." Then
               baglanti.Close()
           Else
               MsgBox(ex.Message)
               baglanti.Close()
           End If
       End Try

Hata mesajında nesne başvurusu hatası vermektedir. Ancak güncelleme işlemi sorunsuz yapılmaktadır.

Düzenlenmiş son örnek ektedir.
.rar GridGuncelleme.rar (Dosya Boyutu: 73,99 KB | İndirme Sayısı: 4)
Dünyada Yetirince Anlaşılır Dile Konuşan İnsanlar Var Birazcık da Anlaması İçin Düşünmesi Gerekiyor İnsanların
Cevapla
#8
Bu yöntem yanlış ve muhtemelen bir yerde de patlar. Olması gereken şu şekilde:

Form bazında tanımlayacağınız değişkenler şu şekilde olacak:

Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=grid.mdb")
 Dim ds As DataSet
 Dim adapter As OleDbDataAdapter
 Dim cbuilder As OleDbCommandBuilder

Daha sonra formun yüklenmesi yani Load olayında şu kodlar ile verileri yükleyebilirsiniz:

Try

     If baglanti.State = ConnectionState.Closed Then
       baglanti.Open()
     End If

     adapter = New OleDbDataAdapter("SELECT * FROM donemler", baglanti)
     ds = New DataSet()
     adapter.Fill(ds, "Donemler_Tablosu")
     DataGridView1.DataSource = ds.Tables(0)

   Catch ex As Exception
     MsgBox(ex.Message)
   End Try

Şimdi verilerin güncellenmesi için yapılacaklara geldi. Burada iki yöntemden birisini tercih edersiniz:

1- Eğer kaydetme işlemi sizin kontrolünüzde olsun isterseniz bir butonun Click olayına,
2- Eğer her hücrede güncelleme sonrasında kaydetme işlemi yapılmak isteniyorsa DataGridView'in CellLeave, CellValueChanged, RowLeave vb. bir olayına

aşağıdaki kodları yazabilirsiniz. Ben yeni bir buton ekledim ve butonun ismini Güncelle olarak değiştirdim. Bu butonun Click olayına:

Try

     cbuilder = New OleDbCommandBuilder(adapter)
     adapter.Update(ds, "Donemler_Tablosu")

   Catch ex As Exception
     MsgBox(ex.Message)
   End Try

bu şekilde DataGridView üzerinde güncelleme işlemini yapabilirsiniz.

Detayları muhtemelen kavrarsınız ancak takıldığınız yer olursa sormaktan çekinmeyin.
AccessTr.Net teknik konular içeren bir sitedir. Bu tip sitelerde en iyi şekilde yardım alabilmeniz için Site Kurallarını mutlaka okumanız ve buna göre hareket etmeniz lazım.
Cevapla
#9
Alpeki99 hocam;

vermiş olduğunuz kodlar için teşekkür ederim.
İnternette benzer bir konu bulmuştum ancak örnek kod bulamadığım hiç yazılanlardan da anlamamıştım.

Sizin verdiğinizle okuduklarım pekişti tekrar teşekkür ederim.

Saygılar
Dünyada Yetirince Anlaşılır Dile Konuşan İnsanlar Var Birazcık da Anlaması İçin Düşünmesi Gerekiyor İnsanların
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da