Forum

VbNet Listbox Ö...
 
Bildirimler
Hepsini Temizle

VbNet Listbox Öğeleri İle SQL'de Sıralı IN Parametresi Kullanımı. [SORU]

10 Yazılar
2 Üyeler
0 Likes
866 Görüntüleme
(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

Merhaba, Vbnet'te listbox öğesine belirli bir excel dosyasından aldığım satırdaki verileri listeletiyorum ve seçili nesne ile işlem yapabiliyorum, örnek olarak

delete urunpuani FROM urunpuani INNER JOIN barkod ON barkod.urunkodu = urunpuani.urunkodu WHERE barkod IN ('" & Trim(ListBox1.SelectedItem) & "')", con)

şeklinde listboxta seçili olan değerin silme işlemini veritabanı içerisinden yapabiliyorum. Fakat ben excelden aldığım ve listboxta aşağı doğru sıralı barkodların IN parametresinde belirtilmiş alanda sırasıyla silme işlemine tabi olmasını istiyorum. Bunu yapabilmemin yolu var mıdır?

 
Gönderildi : 19/11/2016 16:14

(@enginkulac)
Gönderiler: 118
Estimable Member
 

Merhaba,

Konu tam olarak anlaşılmadı. Listbox içerisindeki tüm verileri veritabanından mı silmek istiyorsun?

 
Gönderildi : 19/11/2016 16:23

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

Evet, aslında şöyle excel'de bir sütunda sıralı gelen ürün kodlarını ben bir şekilde listbox'a aktarıyorum ve listboxta bunları görüyorum, ilk verdiğim örnekteki gibi o listbox içerisindeki bütün sıralı ürün kodlarını veritabanından silmek istiyorum, yani "IN" parametresinin her bir alanına o listboxtaki bir satırı eklemek istiyorum. Tabi listbox'a gelecek öğe sayısı sabit değil.

 
Gönderildi : 22/11/2016 21:28

(@enginkulac)
Gönderiler: 118
Estimable Member
 

Aşağıdaki şekilde bir döngü ile alıp sorguya dahil edebilirsin.

Dim AllValues As String = Nothing
For x As Integer = 0 To Me.ListBox1.Items.Count - 1
     If Not AllValues Is Nothing Then AllValues &= ","
     AllValues &= Me.ListBox1.Items(x)
Next

Dim str As String = "DELETE urunpuani FROM urunpuani INNER JOIN barkod ON barkod.urunkodu = urunpuani.urunkodu WHERE barkod IN (" & AllValues & ")"

 
Gönderildi : 23/11/2016 12:11

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

İlginiz için çok teşekkür ederim, aşağıdaki şekilde Button Click olayında kullandım döngüyü fakat işlem yaparken şöyle bir hata ile karşılaşıyorum.

 

nvarchar veri türü numeric veri türüne dönüştürülürken hata.

 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim AllValues As String = Nothing
        For x As Integer = 0 To Me.ListBox1.Items.Count - 1
            If Not AllValues Is Nothing Then AllValues &= ","
            AllValues &= Me.ListBox1.Items(x)
        Next
        Dim con As SqlConnection = New SqlConnection("Data Source=192.168.0.1;Initial Catalog=TEST;User ID=sa;Password=testserver")
        Dim cmd As SqlCommand = New SqlCommand("DELETE urunpuani FROM urunpuani INNER JOIN barkod ON barkod.urunkodu = urunpuani.urunkodu WHERE barkod IN (" & AllValues & ")", con)
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
    End Sub

 

 
Gönderildi : 23/11/2016 13:52

(@enginkulac)
Gönderiler: 118
Estimable Member
 

barkod sutunun formatı nedir?

 
Gönderildi : 23/11/2016 14:20

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

Nvarchar

 
Gönderildi : 23/11/2016 14:42

(@enginkulac)
Gönderiler: 118
Estimable Member
 

İlginiz için çok teşekkür ederim, aşağıdaki şekilde Button Click olayında kullandım döngüyü fakat işlem yaparken şöyle bir hata ile karşılaşıyorum.

 

nvarchar veri türü numeric veri türüne dönüştürülürken hata.

 

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim AllValues As String = Nothing
        For x As Integer = 0 To Me.ListBox1.Items.Count - 1
            If Not AllValues Is Nothing Then AllValues &= ","
            AllValues &= Me.ListBox1.Items(x)
        Next
        Dim con As SqlConnection = New SqlConnection("Data Source=192.168.0.1;Initial Catalog=TEST;User ID=sa;Password=testserver")
        Dim cmd As SqlCommand = New SqlCommand("DELETE urunpuani FROM urunpuani INNER JOIN barkod ON barkod.urunkodu = urunpuani.urunkodu WHERE barkod IN (" & AllValues & ")", con)
        con.Open()
        cmd.ExecuteNonQuery()
        con.Close()
    End Sub

 

 

ListBox'daki verileri değere aktarırken tek tırnak içerisinde aktarırsanız problem cözülecektir.

AllValues &= "'" & Me.ListBox1.Items(x) & "'"  olarak değiştirin.

 
Gönderildi : 23/11/2016 15:03

(@yusufbaran)
Gönderiler: 57
Trusted Member
Konu başlatıcı
 

@Engin Kulaç gerçekten çok teşekkür ederim harikasınız. Yolunuz Ankara civarına düşerse size bir kahve ısmarlamak isterim.

 
Gönderildi : 23/11/2016 15:44

(@enginkulac)
Gönderiler: 118
Estimable Member
 

Rica ederim. Kahve için teşekkürler Ankara'ya yolum düşerse neden olmasın. 🙂

Kolay gelsin.

 
Gönderildi : 23/11/2016 18:04

Paylaş: