İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Sinema Dizi Akıllı Ev Motosiklet Mikromobilite Kripto Para Sağlık Teknolojileri Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Programlama Dilleri
Programlama Dilleri

Vb.net Access checkbox, update ve insert sorunları

Vatansever09.02.20137 cevap4.272 görüntüleme
#1
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?
    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
Cevaplar
#2
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.

            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 Konuyu açan
#3
hokumus dedi: ↑
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.

            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?
#4
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 Konuyu açan
#5
hokumus dedi: ↑
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
        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
#6
Selamlar,

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

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 Konuyu açan
#7
hokumus dedi: ↑
Selamlar,

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

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.
#8
Rica ederim.

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.