Vb.net DataTable'de filtreleme yaparken (') karakter sorunu nasıl aşılır?

Bu konuyu okuyanlar

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Aşağıdaki kodla DataTable'de bir sütunda silinen string'indeki değeri aratıyorum bulunduğundada bu değer boşaltılıyor (siliniyor) kod çalışıyor tek problemi ( ' ) karakteri bulunan bir değer denk geldiğinde kod hata veriyor bu karakterde sorun çıkmaması nasıl sağlanır.
(O'Connor yada Young's gibi)



Kod:
            Dim dtc As DataTableCollection = Ds.Tables
            Dim silinen As String = Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(1).Value.ToString()
            Dim filter1 As String = "grubu = '" & silinen & "'"
            For Each row As DataRow In dtc("Kisiler").Select(filter1)
                If (Cn.State = ConnectionState.Closed) Then Cn.Open()
                Dim komutx As SQLiteCommand = New SQLiteCommand("UPDATE Kisiler SET grubu=@grubu WHERE id=@id", Cn)
                komutx.Parameters.AddWithValue("@grubu", "")
                komutx.Parameters.AddWithValue("@id", row("id"))
                komutx.ExecuteNonQuery()
                komutx.Dispose()
                Cn.Close()
            Next




:cursing:
 
S

SDN Okuru

SDN Okuru
Her bir yazı karakterleri içeren ve çift tırnak (veya tek tırnak) ile başlayan ifade, yine çift tırnak (veya tek tırnak) ile bitmek zorunda. Tıpkı parantezlerde olduğu gibi.
Örnek: ......("Merhaba kızlar, nasılsınız")
İfade içinde çift tırnak kullanırsa, ifadeyi bölmüş olursun. Ve çift ikinci çift tırnaklardan sonra hata alırsın. Veya dört çift tırnak kullanılmış ise, ikinci ve üçüncü çift tırnak arasında her hangi bir kelime veya değer bulunuyorsa, hata alırsın, Ancak çift tırnaklar arasına bir virgül ekleyerek, ifadeleri ayırabilirisin.
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Her bir yazı karakterleri içeren ve çift tırnak (veya tek tırnak) ile başlayan ifade, yine çift tırnak (veya tek tırnak) ile bitmek zorunda. Tıpkı parantezlerde olduğu gibi.
Örnek: ......("Merhaba kızlar, nasılsınız")
İfade içinde çift tırnak kullanırsa, ifadeyi bölmüş olursun. Ve çift ikinci çift tırnaklardan sonra hata alırsın. Veya dört çift tırnak kullanılmış ise, ikinci ve üçüncü çift tırnak arasında her hangi bir kelime veya değer bulunuyorsa, hata alırsın, Ancak çift tırnaklar arasına bir virgül ekleyerek, ifadeleri ayırabilirisin.

Tırnak sorununu anladımda çözümü tam olarak nasıl ifadeleri ikiye ayırma ama ozaman ifade olduğundan farklı bir ifade olur tam anlamadım.
 
S

SDN Okuru

SDN Okuru
Dim filter1 As String = "grubu = '" & silinen & "'"

Yukarıdaki satırda ne yapmak istiyorsun ?


O'Connor tek bir kelimedir. Burada kullandığın tırnakların bir anlamı yok.
"grubu = '" Bu da tek bir kelimedir(String) sadece bütün olarak işlenir.
3. satırı tekrar gözden geçir.
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Dim filter1 As String = "grubu = '" & silinen & "'"

Yukarıdaki satırda ne yapmak istiyorsun ?


O'Connor tek bir kelimedir. Burada kullandığın tırnakların bir anlamı yok.
"grubu = '" Bu da tek bir kelimedir(String) sadece bütün olarak işlenir.
3. satırı tekrar gözden geçir.
grubu sütununda bulunan bir stringi aratıp bunu silmek istiyorum sadece o hücreyi boşaltmak yani satırı silmek değil silmek istediğim stringe'de silinen adını verdim. İstediğim silmek istediğim değerde her ne karakter kullanılırsa kullanılsın sorun çıkmadan silsin.
(O'Connor sadece bir örnekti programımda internetten indirdiğim hazır database bilgilerini kullanıyorum onda var diye bu örneği verdim)


:rolleyes:
 
S

SDN Okuru

SDN Okuru
Dim filter1 As String = grubu("...................................")

Bu şekilde dene.( Noktalar temsilidir)
 

EropaKING

Müdavim
Katılım
29 Temmuz 2009
Mesajlar
1,652
Reaksiyon puanı
17
Puanları
0
Dim filter1 As String = "grubu = '" & silinen & "'" yerine
Dim filter1 As String = "grubu = '" & @silinen & "'" 'yi dener misin... inşAllah çalışır..

ya da bu tarz Parametrelendirmiş Sorgular kullanabilirsin:


Dim query As String = "'a', 'b', 'c'"
sqlselect.Connection = consqlselect.CommandText = "insert into table1(Name1) values (@query)"
sqlselect.Parameters.AddWithValue("@query", a)
sqlselect.ExecuteNonQuery()
 

Vatansever

Asistan
Katılım
23 Ağustos 2007
Mesajlar
405
Reaksiyon puanı
1
Puanları
18
Dim filter1 As String = "grubu = '" & silinen & "'" yerine
Dim filter1 As String = "grubu = '" & @silinen & "'" 'yi dener misin... inşAllah çalışır..

ya da bu tarz Parametrelendirmiş Sorgular kullanabilirsin:


Dim query As String = "'a', 'b', 'c'"
sqlselect.Connection = consqlselect.CommandText = "insert into table1(Name1) values (@query)"
sqlselect.Parameters.AddWithValue("@query", a)
sqlselect.ExecuteNonQuery()

Dim filter1 As String = "grubu = '" & @silinen & "'" çalışmıyor. @ problem çıkartıyor
Database'ye ulaşmadan datatable'den filtreleme lazımdı bana eğer işe yarasaydı programımda başka yerlerdede kullanmayı düşünüyordum ama olmuyor anlaşılan bende sorunumu başka türlü çözmeye karar verdim döngüyle istediğimi aratıp bulma bu yöntem işe yarıyor alttaki gibi yapmaya karar verdim
Kod:
            For Each row As DataRow In Ds.Tables(0).Rows
                If row("grubu").ToString = silinen Then
                    If (Cn.State = ConnectionState.Closed) Then Cn.Open()
                    Dim komutx As SQLiteCommand = New SQLiteCommand("UPDATE Kisiler SET grubu=@grubu WHERE id=@id", Cn)
                    komutx.Parameters.AddWithValue("@grubu", "")
                    komutx.Parameters.AddWithValue("@id", row("id"))
                    komutx.ExecuteNonQuery()
                    komutx.Dispose()
                    Cn.Close()
                End If
            Next
 

EropaKING

Müdavim
Katılım
29 Temmuz 2009
Mesajlar
1,652
Reaksiyon puanı
17
Puanları
0
Hocam isterseniz bir de son olarak şunu deneyelim:

Dim silinen As String = Me.DataGridView1.Rows(Me.DataGridView1.CurrentRow.Index).Cells(1).Value.ToString()
Dim komutx As SQLiteCommand = New SQLiteCommand("UPDATE Kisiler SET grubu=@grubu WHERE id=@id", Cn)
komutx.Parameters.AddWithValue("@grubu", silinen)
 

Son mesajlar

Üst