Forum
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?
Merhaba,
Konu tam olarak anlaşılmadı. Listbox içerisindeki tüm verileri veritabanından mı silmek istiyorsun?
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.
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 & ")"
İ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
barkod sutunun formatı nedir?
Nvarchar
İ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.
@Engin Kulaç gerçekten çok teşekkür ederim harikasınız. Yolunuz Ankara civarına düşerse size bir kahve ısmarlamak isterim.
Rica ederim. Kahve için teşekkürler Ankara'ya yolum düşerse neden olmasın. 🙂
Kolay gelsin.