PDA

View Full Version : سوال: راهنمایی در مورد کد حذف



jpjpjp
چهارشنبه 16 مهر 1393, 11:17 صبح
سلام، بی زحمت اگه امکان داره دوستان یه کمکی بکنن و بگن مشکل این کد چیه.
هر وقت دکمه حذف رو میزنم کل دیتابیس پاک میشه، میخام فقط سطری رو که انتخاب کردم پاک شه.
cn = new OleDbConnection();
cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|DataDirectory|\\testdb.accdb");
OleDbCommand command = new OleDbCommand();
OleDbDataAdapter da = new OleDbDataAdapter();
DataTable dt = new DataTable();

command.CommandType = CommandType.Text;
command.CommandText = "DELETE FROM tbltest WHERE 'id=@id'";
command.Parameters.AddWithValue("@name", txtName.Text);
command.Parameters.AddWithValue("@number", txtNumber.Text);

da.SelectCommand = command;
command.Connection = cn;

cn.Open();
command.ExecuteNonQuery();
cn.Close();

feryt20
چهارشنبه 16 مهر 1393, 11:54 صبح
شما متغیر @id رو مقدار ندادی خب عزیز

juza66
چهارشنبه 16 مهر 1393, 12:05 عصر
سلام

اینجوری تغییر بده


command.CommandText = "DELETE FROM tbltest WHERE idcode=@id";


command.Parameters.AddWithValue("@id", Textbox.Text);

NASA's Spaceman
چهارشنبه 16 مهر 1393, 12:13 عصر
دوست عزیز الان @id که گذاشتی چی هست؟
شرطط مشکل داره اول شرطط رو درست کاملش کن بعد طبق همون چیزی که میخوای فقط یک رکورد حذف میشه
با سپاس Spaceman

sayvan
چهارشنبه 16 مهر 1393, 17:45 عصر
command.CommandText = "DELETE FROM tbltest WHERE 'id=@id'";
اون دو تا تک کوتیشنت رو بردار درست میشه

command.CommandText = "DELETE FROM tbltest WHERE id=@id";
این دو تا خطت هم اضافه

command.Parameters.AddWithValue("@name", txtName.Text);
command.Parameters.AddWithValue("@number", txtNumber.Text);

به جاش اینو بنویس

command.Parameters.AddWithValue("@name", txtID.Text);

ورودی آی دیت همون txtID هست که خودت عوضش کن

jpjpjp
پنج شنبه 17 مهر 1393, 10:37 صبح
مرسی از راهنمائیتون درست شد ولی میخام وقتی سطری رو انتخاب کردم و دکمه حذف رو زدم رکورد پاک بشه.
اینطوری که شما فرمودین باید یه تکس باکس بذارم بعد شماره سطر رو وارد کنم و بعد دکمه حذف رو بزنم.
اگه امکان داره راهنمائی بفرمائید.

hadi vafaii
پنج شنبه 17 مهر 1393, 22:33 عصر
مرسی از راهنمائیتون درست شد ولی میخام وقتی سطری رو انتخاب کردم و دکمه حذف رو زدم رکورد پاک بشه. اینطوری که شما فرمودین باید یه تکس باکس بذارم بعد شماره سطر رو وارد کنم و بعد دکمه حذف رو بزنم. اگه امکان داره راهنمائی بفرمائید. سلام من تویه نرم افزاری که دارم روش کار میکنم اینجوری دکمه حذف رو قرار دادم که اگه رویه ردیف مورد نظر دابل کلیک شد اون ستونی که تویه دیتابیسم به عنوان کلید اصلی در قرار دادمو تویه تکست باکس میاره و حذف میکنم و تکست باکس رو هم جوری قرار دادم که وقتی مقدارش برابر با کلید اصلی باشه حذف شه اینجوری این مزیت رو داره که مثلا تویه یه انبار یا هرجایی اگه کد کالا رو داسته باشی و تویه تکست باکس درج کنی اونو حذف میکنه کدش هم اینجوری نوشتم private void button2_Click(object sender, EventArgs e) { if (txtdelet.Text == "") { MessageBox.Show("کد مورد نظر را درج نمایید"); } else { if (MessageBox.Show("آیا قصد حذف کردن اطلاعات مورد نظر را دارید؟", "حذف", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK) { OleDbConnection a = new OleDbConnection(); a.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=|datadirectory|\\Database.mdb;persist security info = false"; a.Open(); OleDbCommand b = new OleDbCommand(); b.Connection = a; b.CommandText = "delete from Table1 where code='" + txtdelet.Text + "'"; try { b.ExecuteNonQuery(); MessageBox.Show("حذف شد"); } catch { MessageBox.Show("خطا"); } a.Close(); dgv.Rows.Clear(); a.ConnectionString = "provider=microsoft.jet.oledb.4.0;data source=|datadirectory|\\Database.mdb;persist security info = false"; a.Open(); OleDbCommand c1 = new OleDbCommand(" select * from Table1", a); OleDbDataReader dr = c1.ExecuteReader(); object[] x = new object[14]; while (dr.Read()) { dr.GetValues(x); dgv.Rows.Add(x); } a.Close(); txtdelet.Text = ""; } } } اینم کدی که اگه رویه گریدویو دابل کلیک شد کلید اصلی رو تویه تکست باکس مورد نظر کپی میکنه private void dgv_MouseDoubleClick(object sender, MouseEventArgs e) { txtdelet.Text = dgv.CurrentRow.Cells[7].Value.ToString(); }