Vb.net Access checkbox, update ve insert sorunları

Bu konuyu okuyanlar

Vatansever

Asistan
Katılım
23 Ağu 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Mail programım için yaptığım adres defterinde update ve insert'leri yapamadım yardım edebilirmisiniz

Access tablom (Orjinal sırasıyla)
Tablonunadı = Kisiler
id = Otomatik Sayı
check = Evet/Hayır (CheckBox)
isim = Metin
e-posta = Metin
bilgi = Metin
grubu = Metin

Hem insert hemde update yapamadım kodum aşağıda yanlış olan nedir?
Kod:
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If Button1.Text = "Ekle" Then
            Dim deger As Boolean = True
            Dim komut1 As New OleDbCommand()
            If (cn.State = ConnectionState.Closed) Then cn.Open()
            komut1.Connection = cn
            komut1.CommandText = (((("INSERT INTO Kisiler(check,isim,e-posta,bilgi,grubu) VALUES ('" & deger & "','") & Me.TextBox1.Text & "','") & Me.TextBox2.Text & "','") & Me.TextBox3.Text & "','") & Me.ComboBox1.SelectedText & "')"
            komut1.ExecuteNonQuery()
            komut1.Dispose()
            cn.Close()
        End If

        If Button1.Text = "Değiştir" Then
            If (cn.State = ConnectionState.Closed) Then cn.Open()
            Dim komut2 As OleDb.OleDbCommand = New OleDb.OleDbCommand("UPDATE Kisiler SET isim=?, e-posta=?, bilgi=?, grubu=? WHERE id=?", cn)
            komut2.Parameters.AddWithValue("@isim", Me.TextBox1.Text)
            komut2.Parameters.AddWithValue("@e-posta", Me.TextBox2.Text)
            komut2.Parameters.AddWithValue("@bilgi", Me.TextBox3.Text)
            komut2.Parameters.AddWithValue("@grubu", Me.ComboBox1.SelectedText)
            komut2.Parameters.AddWithValue("@id", Me.id.Text)
            komut2.ExecuteNonQuery()
            komut2.Dispose()
            cn.Close()
        End If

    End Sub
 

hokumus

Asistan
Katılım
15 May 2012
Mesajlar
173
Reaksiyon puanı
3
Puanları
18
Selamlar,

Ekle bölümü içerisinde 1. hata deger değişkeninin tırnak içerisinde gönderiliyor olmasıdır. Değer boolean tipinde bir değişkendir.
Siz 'True' olarak değer gönderdiğiniz için tip uyuşmazlığından dolayı bir hata alırsınız.

Tırnakları kaldırdığınız zaman 2. hatayı INSERT INTO Kisiler(check, isim, ... diye devam eden kısımda alacaksınız.
Hatanın türü Syntax error in INSERT INTO statement şeklinde olacaktır. Access Boolean alanı çözümleyemeyeceği için check değerini [check] şeklinde yazarak bu hatayıda çözebilirsiniz.

INSERT INTO Kisiler([check], isim, gibi.

3. hatayı e-posta gibi bir alan tanımlamasında alırsın. Genel olarak tanımlamalarında ihtiyaca göre alt çizgiyi kullanmanı öneririm. Tanımlamayı eposta olarak düzenlediğinizde bu hatada ortadan kalkacaktır.


Güncelleme bölümü için tek bir hata bulunmakta. Siz parameter kullandığınız zaman sql sorgusu içerisinde parametre olarak bir anahtar kelime belirtmeniz gerekmektedir.

UPDATE Kisiler SET isim=?
komut2.Parameters.AddWithValue("@isim", Me.TextBox1.Text)

Bu şekilde yapılan tanımlama hatalıdır. Soru işareti yerine

UPDATE Kisiler SET isim=@isim

Yukarıdaki gibi düzenleme yapılırsa parameter içerisinde belirtmiş olduğunuz value alanını setleyebilirsiniz.
Aşağıdaki gibi bir düzenleme ile Update işleminide gerçekleştirebilirsiniz.

Kod:
            Dim komut2 As OleDb.OleDbCommand = New OleDb.OleDbCommand("UPDATE Kisiler SET isim=@isim, eposta=@eposta, bilgi=@bilgi, grubu=@grubu WHERE id=@id", con)
            komut2.Parameters.AddWithValue("@isim", Me.TextBox1.Text)
            komut2.Parameters.AddWithValue("@eposta", Me.TextBox2.Text)
            komut2.Parameters.AddWithValue("@bilgi", Me.TextBox3.Text)
            komut2.Parameters.AddWithValue("@grubu", Me.ComboBox1.Text)
            komut2.Parameters.AddWithValue("@id", id)
            komut2.ExecuteNonQuery()
            komut2.Dispose()
            con.Close()


Dilerim açıklamaya çalışabilmişimdir.

Başarılar dilerim.
 

Vatansever

Asistan
Katılım
23 Ağu 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Selamlar,

Ekle bölümü içerisinde 1. hata deger değişkeninin tırnak içerisinde gönderiliyor olmasıdır. Değer boolean tipinde bir değişkendir.
Siz 'True' olarak değer gönderdiğiniz için tip uyuşmazlığından dolayı bir hata alırsınız.

Tırnakları kaldırdığınız zaman 2. hatayı INSERT INTO Kisiler(check, isim, ... diye devam eden kısımda alacaksınız.
Hatanın türü Syntax error in INSERT INTO statement şeklinde olacaktır. Access Boolean alanı çözümleyemeyeceği için check değerini [check] şeklinde yazarak bu hatayıda çözebilirsiniz.

INSERT INTO Kisiler([check], isim, gibi.

3. hatayı e-posta gibi bir alan tanımlamasında alırsın. Genel olarak tanımlamalarında ihtiyaca göre alt çizgiyi kullanmanı öneririm. Tanımlamayı eposta olarak düzenlediğinizde bu hatada ortadan kalkacaktır.


Güncelleme bölümü için tek bir hata bulunmakta. Siz parameter kullandığınız zaman sql sorgusu içerisinde parametre olarak bir anahtar kelime belirtmeniz gerekmektedir.

UPDATE Kisiler SET isim=?
komut2.Parameters.AddWithValue("@isim", Me.TextBox1.Text)

Bu şekilde yapılan tanımlama hatalıdır. Soru işareti yerine

UPDATE Kisiler SET isim=@isim

Yukarıdaki gibi düzenleme yapılırsa parameter içerisinde belirtmiş olduğunuz value alanını setleyebilirsiniz.
Aşağıdaki gibi bir düzenleme ile Update işleminide gerçekleştirebilirsiniz.

Kod:
            Dim komut2 As OleDb.OleDbCommand = New OleDb.OleDbCommand("UPDATE Kisiler SET isim=@isim, eposta=@eposta, bilgi=@bilgi, grubu=@grubu WHERE id=@id", con)
            komut2.Parameters.AddWithValue("@isim", Me.TextBox1.Text)
            komut2.Parameters.AddWithValue("@eposta", Me.TextBox2.Text)
            komut2.Parameters.AddWithValue("@bilgi", Me.TextBox3.Text)
            komut2.Parameters.AddWithValue("@grubu", Me.ComboBox1.Text)
            komut2.Parameters.AddWithValue("@id", id)
            komut2.ExecuteNonQuery()
            komut2.Dispose()
            con.Close()


Dilerim açıklamaya çalışabilmişimdir.

Başarılar dilerim.

Teşekkür ederim dediğiniz gibi yaptım Update kısmı oldu ancak 1. hata dediğiniz true değerinin tırnaklarını kaldırma kısmını yapamadım
1. hata deger değişkeninin tırnak içerisinde gönderiliyor olmasıdır. Değer boolean tipinde bir değişkendir.
Siz 'True' olarak değer gönderdiğiniz için tip uyuşmazlığından dolayı bir hata alırsınız.

Bu kısım olmadı tam olarak nasıl yazılıyor?
 

hokumus

Asistan
Katılım
15 May 2012
Mesajlar
173
Reaksiyon puanı
3
Puanları
18
Selamlar,

INSERT INTO Kisiler(check, isim,

yukarıdaki ifadede geçen check alan adını aşağıdaki gibi köşeli parantez içerisine alıp yazman yeterli olacaktır.

INSERT INTO Kisiler([check], isim


Başarılar dilerim.
 

Vatansever

Asistan
Katılım
23 Ağu 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Selamlar,

INSERT INTO Kisiler(check, isim,

yukarıdaki ifadede geçen check alan adını aşağıdaki gibi köşeli parantez içerisine alıp yazman yeterli olacaktır.

INSERT INTO Kisiler([check], isim


Başarılar dilerim.


Kodu aşağıdaki gibi yazdım olmuyor

Kod:
        If Button1.Text = "Ekle" Then
            Dim deger As Boolean = False
            Dim komut1 As New OleDbCommand()
            If (cn.State = ConnectionState.Closed) Then cn.Open()
            komut1.Connection = cn
            komut1.CommandText = (((("INSERT INTO Kisiler([check],isim,eposta,bilgi,grubu) VALUES ('" & deger & "','") & Me.TextBox1.Text & "','") & Me.TextBox2.Text & "','") & Me.TextBox3.Text & "','") & Me.ComboBox1.SelectedItem & "')"
            komut1.ExecuteNonQuery()
            komut1.Dispose()
            cn.Close()
        End If
 

hokumus

Asistan
Katılım
15 May 2012
Mesajlar
173
Reaksiyon puanı
3
Puanları
18
Selamlar,

Hatanın sebebi Boolean ifadesini tırnak içerisinde String bir değer olarak gönderiyor olmandan kaynaklanıyor.


Kod:
komut1.CommandText = (((("INSERT INTO Kisiler([check],isim,eposta,bilgi,grubu) VALUES ('" & deger & "','") & Me.TextBox1.Text & "','") & Me.TextBox2.Text & "','") & Me.TextBox3.Text & "','") & Me.ComboBox1.SelectedItem & "')"


VALUES ('" & deger & "','") diye devam eden ifadeyi

VALUES (" & deger & ",'") şeklinde değiştirdiğin zaman tırnak içerisinde göndermemiş olacaksın ve hata ortadan kalkacak.

Bu arada çift tırnaktan bahsetmiyorum. Tek tırnaklara dikkat et çözeceksin.


Başarılar dilerim.
 

Vatansever

Asistan
Katılım
23 Ağu 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Selamlar,

Hatanın sebebi Boolean ifadesini tırnak içerisinde String bir değer olarak gönderiyor olmandan kaynaklanıyor.


Kod:
komut1.CommandText = (((("INSERT INTO Kisiler([check],isim,eposta,bilgi,grubu) VALUES ('" & deger & "','") & Me.TextBox1.Text & "','") & Me.TextBox2.Text & "','") & Me.TextBox3.Text & "','") & Me.ComboBox1.SelectedItem & "')"


VALUES ('" & deger & "','") diye devam eden ifadeyi

VALUES (" & deger & ",'") şeklinde değiştirdiğin zaman tırnak içerisinde göndermemiş olacaksın ve hata ortadan kalkacak.

Bu arada çift tırnaktan bahsetmiyorum. Tek tırnaklara dikkat et çözeceksin.


Başarılar dilerim.

Teşekkür ederim sağol VALUES (" & deger & ",'") oldu şimdi hata yok.
 
Üst