En iyi yanıtlayıcılar
access veri tabanından veri silme yardımı lütfen

Soru
-
iyi akşamlar access veri tabanımızdaki No isimli sutun otomatik sayı ve bunu silemiyoruz ve düzenleme yapamıyoruz yardımcı olursanız seviniirm saygılarımla,
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
Dim sql As New String("DELETE FROM veriler WHERE No='{0}'")
sql = String.Format(sql, DataGridView1.CurrentRow.Cells(0).Value)
Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'")
Dim komutnesnesi As New OleDb.OleDbCommand(sql, baglanti)
Dim sonuc As Integer
baglanti.Open()
sonuc = komutnesnesi.ExecuteNonQuery()
Listele("SELECT * FROM veriler'")
baglanti.Close()
End Sub
Yanıtlar
-
Üstte bahsettiğiniz sorun, kaydın silinmesiyle ilgiliydi, kaydetme değil. Onu çözdünüz galiba. Şimdi verdiğiniz kodlara gelince, neden işin kolayı varken zoru tercih ettiğini anlamak mümkün değil. O kadar çok tek tırnak ve çift tırnakla uğraşmak kolay mı oluyor anlamıyorum.
Soru işaretleri alanların boyunca devam edecek. Ve o soru işaretlerine göre sırayla aşağıdaki gibi devam edeceksin. Hepsinin sırası düzgün olacak sadece. 15 tane soru işareti varsa, 15 tane de .addwithvalue satırın olacak. Hepsi bu.Private Sub Duzelt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click conn.Open() Dim guncel As OleDb.OleDbCommand = New OleDb.OleDbCommand("UPDATE veriler SET Ad =?, Sd=?, Un=?, Gr=?, T1=?, T2=?, T3=?, Fks=?, Ads1=?, Ct1=?, G1=? ........... WHERE No=?", conn) With guncel.Parameters .AddWithValue("p1", textbox1.text) .AddWithValue("p2", TextBox2.Text) .AddWithValue("p3", TextBox3.Text) .AddWithValue("p4", TextBox4.Text) .AddWithValue("p5", TextBox5.Text) .AddWithValue("p6", TextBox6.Text) .AddWithValue("p7", TextBox7.Text) .AddWithValue("p8", TextBox8.Text)
.....
End With guncel.ExecuteNonQuery() conn.Close() End Sub
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:37
-
Herhangi bir hata döndürüyor mu? Try catch ile deneyin. Ama buradan baktığımızda, string.format kullanımının gerekli olmadığını söyleyebiliriz. Ve şu şekilde deneyin:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'") Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No=?", baglanti) komutnesnesi.Parameters.AddWithValue("p", DataGridView1.CurrentRow.Cells(0).Value) Dim sonuc As Integer baglanti.Open() sonuc = komutnesnesi.ExecuteNonQuery() Listele("SELECT * FROM veriler'") baglanti.Close() End Sub
Ek Not: Integer değer acces sorgularında ' ' işaretlerinin içine alınmaz. Alındadığın ölçüt uyuşmazlığı hatası dönebilir. no=5 ve no='5' aynı şey değildir. Sayı alanından silme için no=5 olmalı. String.format yaptığınız yerde sonuç '' içinde dönüyor ve muhtemelen dönen ama size görünmeyen hata budur. Try Catch kullanın.
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:36
-
Eğer bu kod, formunda da bana verdiğin şekilde ise, çalışmaması normal...
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'") Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No=?", baglanti) komutnesnesi.Parameters.AddWithValue("p", DataGridView1.CurrentRow.Cells(0).Value) Dim sonuc As Integer baglanti.Open() sonuc = komutnesnesi.ExecuteNonQuery() 'Listele("SELECT * FROM veriler'") bunu buradan sil, içinde tek tırnak ne işe yarar bilmem. baglanti.Close()
Listele("Select * From veriler") 'burada kullan.
End Sub
İlk satırı şöyle değiştir.
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) handles button5.click 'hangi butonsa işte...
-
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) handles button5.click
Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'") Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No= bu raya ne glecek ?", baglanti) komutnesnesi.Parameters.AddWithValue("Textbox21.text", DataGridView1.CurrentRow.Cells(0).Value) Dim sonuc As Integer baglanti.Open() sonuc = komutnesnesi.ExecuteNonQuery() baglanti.Close()
Listele("Select * From veriler")
End Sub
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:37
-
Bir diğer seçenek de, komutu eklemek istediğiniz buton'a çift tıklayın ve açılan kod bloğuna bu kodu ekleyin.
Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'")
Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No= bu raya ne glecek ?", baglanti)
komutnesnesi.Parameters.AddWithValue("Textbox21.text", DataGridView1.CurrentRow.Cells(0).Value)
Dim sonuc As Integer baglanti.Open()
sonuc = komutnesnesi.ExecuteNonQuery()
baglanti.Close() Listele("Select * From veriler")
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:37
Tüm Yanıtlar
-
Herhangi bir hata döndürüyor mu? Try catch ile deneyin. Ama buradan baktığımızda, string.format kullanımının gerekli olmadığını söyleyebiliriz. Ve şu şekilde deneyin:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'") Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No=?", baglanti) komutnesnesi.Parameters.AddWithValue("p", DataGridView1.CurrentRow.Cells(0).Value) Dim sonuc As Integer baglanti.Open() sonuc = komutnesnesi.ExecuteNonQuery() Listele("SELECT * FROM veriler'") baglanti.Close() End Sub
Ek Not: Integer değer acces sorgularında ' ' işaretlerinin içine alınmaz. Alındadığın ölçüt uyuşmazlığı hatası dönebilir. no=5 ve no='5' aynı şey değildir. Sayı alanından silme için no=5 olmalı. String.format yaptığınız yerde sonuç '' içinde dönüyor ve muhtemelen dönen ama size görünmeyen hata budur. Try Catch kullanın.
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:36
-
Eğer bu kod, formunda da bana verdiğin şekilde ise, çalışmaması normal...
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'") Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No=?", baglanti) komutnesnesi.Parameters.AddWithValue("p", DataGridView1.CurrentRow.Cells(0).Value) Dim sonuc As Integer baglanti.Open() sonuc = komutnesnesi.ExecuteNonQuery() 'Listele("SELECT * FROM veriler'") bunu buradan sil, içinde tek tırnak ne işe yarar bilmem. baglanti.Close()
Listele("Select * From veriler") 'burada kullan.
End Sub
İlk satırı şöyle değiştir.
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) handles button5.click 'hangi butonsa işte...
-
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) handles button5.click
Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'") Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No= bu raya ne glecek ?", baglanti) komutnesnesi.Parameters.AddWithValue("Textbox21.text", DataGridView1.CurrentRow.Cells(0).Value) Dim sonuc As Integer baglanti.Open() sonuc = komutnesnesi.ExecuteNonQuery() baglanti.Close()
Listele("Select * From veriler")
End Sub
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:37
-
Bir diğer seçenek de, komutu eklemek istediğiniz buton'a çift tıklayın ve açılan kod bloğuna bu kodu ekleyin.
Dim baglanti As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source='Go_Data.mdb'")
Dim komutnesnesi As New OleDb.OleDbCommand("DELETE FROM veriler WHERE No= bu raya ne glecek ?", baglanti)
komutnesnesi.Parameters.AddWithValue("Textbox21.text", DataGridView1.CurrentRow.Cells(0).Value)
Dim sonuc As Integer baglanti.Open()
sonuc = komutnesnesi.ExecuteNonQuery()
baglanti.Close() Listele("Select * From veriler")
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:37
-
Üstte bahsettiğiniz sorun, kaydın silinmesiyle ilgiliydi, kaydetme değil. Onu çözdünüz galiba. Şimdi verdiğiniz kodlara gelince, neden işin kolayı varken zoru tercih ettiğini anlamak mümkün değil. O kadar çok tek tırnak ve çift tırnakla uğraşmak kolay mı oluyor anlamıyorum.
Soru işaretleri alanların boyunca devam edecek. Ve o soru işaretlerine göre sırayla aşağıdaki gibi devam edeceksin. Hepsinin sırası düzgün olacak sadece. 15 tane soru işareti varsa, 15 tane de .addwithvalue satırın olacak. Hepsi bu.Private Sub Duzelt_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click conn.Open() Dim guncel As OleDb.OleDbCommand = New OleDb.OleDbCommand("UPDATE veriler SET Ad =?, Sd=?, Un=?, Gr=?, T1=?, T2=?, T3=?, Fks=?, Ads1=?, Ct1=?, G1=? ........... WHERE No=?", conn) With guncel.Parameters .AddWithValue("p1", textbox1.text) .AddWithValue("p2", TextBox2.Text) .AddWithValue("p3", TextBox3.Text) .AddWithValue("p4", TextBox4.Text) .AddWithValue("p5", TextBox5.Text) .AddWithValue("p6", TextBox6.Text) .AddWithValue("p7", TextBox7.Text) .AddWithValue("p8", TextBox8.Text)
.....
End With guncel.ExecuteNonQuery() conn.Close() End Sub
- Yanıt Olarak İşaretleyen Berkay42 16 Ocak 2013 Çarşamba 21:37