PDA

View Full Version : سوال: مشکل این کد برای حذف ردیفی از اطلاعات از بانک اکسس



Alireza.imani
دوشنبه 06 آذر 1391, 12:29 عصر
سلام دوستان...من برای حذف یک ردیف از بانک اکسس از کد زیر استفاده می کنم...ولی به جای حذف کردن ردیف انتخاب شده کل ردیف ها رو پاک می کنه...مشکلش چیه؟



if (dataGridView1.SelectedCells.Count != 0)//tedade cell hayi ke select shodan
{
if (MessageBox.Show("آیا مطمئن هستید؟", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{}
string a=datagridview1.selectedrows.tostring();


con.Open();
string query = "DELETE a FROM ketab "] + "')";
OleDbCommand command = new OleDbCommand();
command.CommandText = query;
command.Connection = con;
command.ExecuteNonQuery();
con.Close();
load();

MessageBox.Show("با موفقیت حذف شد ", "", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}

Y_Safaiee
دوشنبه 06 آذر 1391, 13:48 عصر
سلام دوست من

دوست عزیز بهتره جای اینه چند فیلد رو پاس بدی تا یک کتاب رو حذف کنه یه شناسه یکتا از کتاب رو بدی تا براساس اون کتاب مورد نظرتو حذف کنه مثل کد کتاب,شابک,بارکد و ...

برای حذف یک ردیف که توسط کاربر انتخاب شده از کد زیر میتونی استفاده کنی :


private void btn_del_Click(object sender, EventArgs e)
{

int row = dataGridView1.CurrentRow.Index;
DialogResult dlg=MessageBox.Show("آیا دل استوارید که پاک شود؟","حذف",MessageBoxButtons.YesNo,MessageBoxIcon.Question);
if (dlg == DialogResult.Yes)
{
sqlcnn.Open();
sqlcmd.Connection = sqlcnn;
sqlcmd.CommandText = "delete from ketabs where Bid=" + long.Parse(dataGridView1.Rows[row].Cells[0].Value.ToString());
sqlcmd.ExecuteNonQuery();
Form1_Load(sender, e);
}
}


برای حذف همه ردیف هایی که انتخاب شدن(مثلا کاربر تو دیتاگرید 3تا ردیف رو انتخاب کرده که حذف شن):


private void btn_delSelected_Click(object sender, EventArgs e)
{
if (dataGridView1.SelectedRows.Count != 0)
{
DialogResult dlg = MessageBox.Show("آیا دل استوارید که پاک شود؟", "حذف", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
sqlcnn.Open();
if (dlg == DialogResult.Yes)
{
foreach (DataGridViewRow rows in dataGridView1.Rows)
{
if (rows.Selected == true)
{

sqlcmd.Connection = sqlcnn;
sqlcmd.CommandText = "delete from ketabs where Bid=" + long.Parse(rows.Cells[0].Value.ToString());
sqlcmd.ExecuteNonQuery();

}
}
sqlcnn.Close();
Form1_Load(sender, e);
}
}
}


موفق باشی
بایت بایت

Alireza.imani
دوشنبه 06 آذر 1391, 18:05 عصر
در این کد :

qlcmd.CommandText = "delete from ketabs where Bid=" + long.Parse(dataGridView1.Rows[row].Cells[0].Value.ToString());

Bid چیه؟

Y_Safaiee
دوشنبه 06 آذر 1391, 18:10 عصر
با سلام مجدد

Bid نوشته شده من مخفف BookID بود شما میتونین BID رو هرجیزی در نظر بگیرین اما از نظر من یا کد کتاب باشه یا شابک یا بارکد کتاب,چون این 3شناسه یکتا هستن.

موفق باشی
بایت بایت

Alireza.imani
دوشنبه 06 آذر 1391, 18:55 عصر
ممنون یونس جون...من از کد شما استفاده نکردم ولی کد شما جرقه ای در ذهنم ایجاد کرد و از کد زیر استفاده کردم :

if (MessageBox.Show("آیا مطمئن هستید", "", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
{
con.Open();
string query = "DELETE FROM ketab WHERE (F='" + dataGridView1.CurrentRow.Cells[0].Value + "' AND A='" + dataGridView1.CurrentRow.Cells[1].Value + "' and B='" + dataGridView1.CurrentRow.Cells[2].Value + "'and C='" + dataGridView1.CurrentRow.Cells[3].Value + "'and D='" + dataGridView1.CurrentRow.Cells[4].Value + "')";
OleDbCommand command = new OleDbCommand();
command.CommandText = query;
command.Connection = con;
command.ExecuteNonQuery();
con.Close();

}
load();

MessageBox.Show("با موفقیت حذف شد ", "", MessageBoxButtons.OK, MessageBoxIcon.Information);