PDA

View Full Version : حذف آيتم انتخاب شده در يك Listbox از ديتابيس



saeid14144
یک شنبه 09 مرداد 1390, 13:07 عصر
سلام
اميدوارم بتونيد كمكم كنيد دوستان

يه لسيت باكس دارم كه اونو از طريق كد زير از ديتابيس پر كردم:


Dim cmd As New OleDbCommand
Dim da As New OleDbDataAdapter
Dim dt As New DataTable


cmd.CommandText = "select janr_title,janr_id from janr_tbl"
cmd.Connection = conn
da.SelectCommand = cmd
da.Fill(dt)
lb_janr.DataSource = dt


lb_janr.DisplayMember = "janr_title"
lb_janr.ValueMember = "janr_id"
lb_janr.SelectedIndex = -1


همون طور كه مي بينيد displayMember رو گذاشتم عنوان رو نمايش بده و ValueMember رو گذاشتم ID رو نشون بده

حالا ميخوام با انتخاب آيتم دلخواه از ليست باكس, اون آيتم از ديتابيس حذف بشه (دقت كنيد از ديتا بيس ميخوام حذف شه نه فقط از خود ليست باكس)
من كد زير رو نوشتم براي اين كار:


Private Sub btn_delete_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_delete.Click

Dim cmd, cmd2 As New OleDbCommand
Dim da As New OleDbDataAdapter
Dim dt As New DataTable


cmd.Connection = conn
cmd.CommandText = "delete from janr_tbl where janr_id=@id"

cmd.Parameters.Add("@id", OleDbType.Integer)
cmd.Parameters.Item("@id").Value = lb_janr.SelectedValue


'ريفرش كردن ليست باكس
cmd2.CommandText = "select janr_title from janr_tbl"
cmd2.Connection = conn
da.SelectCommand = cmd2
da.Fill(dt)
lb_janr.DataSource = dt
lb_janr.DisplayMember = "janr_title"
lb_janr.SelectedIndex = -1

يعني بر اساس ID آيتم انتخاب شده در ليست باكس اون آيتم حذف شه
ولي متاسفانه به جواب نرسيدم
از اساتيد ميخوام منو راهنمايي كنن و بگن كه كجاي كارم ايراد داشته

با تشكر

Behzad_MCP
یک شنبه 09 مرداد 1390, 13:46 عصر
دوست عزیز فکر میکنم یه جایی باید cmd که همون فرمان delete را توش نوشتی را Execute کنی

saeid14144
یک شنبه 09 مرداد 1390, 14:08 عصر
مرسي دوست گلم

اونو ميدونم
من مشكلم با اين قسمتش هست:


cmd.Parameters.Item("@id").Value = lb_janr.SelectedValue

نميدونم اينجوري درسته يا نه كه نوشتم

Behzad_MCP
یک شنبه 09 مرداد 1390, 14:16 عصر
دوست عزیز کارت درسته فکر کنم جواب بده حالا برای اطمینان Input یا output بودن پارامترتم مشخص کن

saeid14144
یک شنبه 09 مرداد 1390, 16:00 عصر
بله امتحان كردم و درست بود

فقط يه مشكل داره
بعد از باز شدن ليست باكس آيتم انتخابي رو delete كرد ولي اگه بخوايم آيتم بعدي رو هم delete كنيم ارور ميده...خيلي جالبه
بايد يه بار فرم رو ببنديم و دوباره لود كنيم تا بتونيم آيتم بعديش رو هم پاك كنيم و براي پاك كردن آيتمهاي بعدي هم به همين ترتيب..!!!!

فكر ميكنيد دليلش چي باشه؟

saeid14144
یک شنبه 09 مرداد 1390, 16:38 عصر
مشكلم حل شد
تشكر

Behzad_MCP
یک شنبه 09 مرداد 1390, 16:41 عصر
دوست عزیز اگه بگی چه اروری میده شاید بتونم کمک بکنم ولی با توجه به اینکه میگی باید فرمو ببندم فکر میکنم Connection را نمیبندی