PDA

View Full Version : کند شدن access در C#



mohammadali1375
پنج شنبه 21 اسفند 1393, 12:37 عصر
سلام. ببخشید یکم عنوان به نظر نا مفهوم میاد.
داشتم رو یک نرم افزار حظور و غیاب کار میکردم که به یه مشکل خوردم که فکر کنم چند روز پیش که داشتم مینوشتم نبود.
مشکل اینه که مثلا یک کلید هست برای حذف رکورد. با زدن کلید کوری پاک کردن اجرا میشه و بلافاصله لیست نمایش اعضا پاک میشه و از اول از روی دیتا بیس ساخته میشه. حالا مشکلی که پیش اومده اینه که نشون نمیده پاک شده یعنی با تازه سازی لیست از روی دیتابیس ( بلا فاصله بعد از پاک کردن رکورد) به نظر میاد هنوز رکورد پاک نشده و دیتابیس اون رکورد رو بر میگردونه. اگه نرم افزار رو باز و بسته کنم یا دو باره یک عمل دیگه که باعث تازه سازی لیست بشه انجام بدم نشون میده که رکورد پاک شده. یا مثلا اگه هم تو همون event کلیک دوبار کوری مربوط به حذف رو اجرا کنم بعدش لیست رو تازه سازی کنم نشون میده پاک شده ولی اگه چند بار لیست رو پس از پاک شدن بلافاصله به روز کنم نشون نمیده که رکورد پاک شده. مشکل از چیه ؟

حسین.کاظمی
پنج شنبه 21 اسفند 1393, 13:08 عصر
سلام دوست عزیز میشه کدهایی که استفاده کردی را بزاری تا من و دوستان بررسی کنیم ببینیم مشکلت از کجا هست؟؟؟؟

mohammadali1375
پنج شنبه 21 اسفند 1393, 13:31 عصر
void RefreshBeheshtiList()
{


OleDbDataReader dbDataReader = ExecuteReader("SELECT * FROM " + "بهشتیان" +" ORDER BY ID DESC");
beheshtiyanListBox.Items.Clear();
if (dbDataReader.HasRows)
{

while (dbDataReader.Read())
{
BeheshtiListItemUserControl beheshtiListItem = new BeheshtiListItemUserControl();
beheshtiListItem.id = UInt64.Parse(dbDataReader["ID"].ToString());
beheshtiListItem.SetName(dbDataReader["Name"].ToString());
beheshtiListItem.SetLastName(dbDataReader["LastName"].ToString());
beheshtiListItem.SetCardNumber(dbDataReader["CardNumber"].ToString());
beheshtiyanListBox.Items.Add(beheshtiListItem);
}
}
}



void ExecuteNonQuery(String query)
{
OleDbCommand dbCommand = new OleDbCommand();
OleDbConnection dbConnection = new OleDbConnection();
dbConnection.ConnectionString = connectionString;
dbCommand.Connection = dbConnection;
try
{
if (dbConnection.State == System.Data.ConnectionState.Open)
dbConnection.Close();
dbCommand.CommandText = query;
dbConnection.Open();
dbCommand.ExecuteNonQuery();
}
catch(Exception e)
{
MessageBox.Show(e.Message);
}
}



private void BeheshtiDeleteButton_Click(object sender, RoutedEventArgs e)
{
BeheshtiListItemUserControl beheshtiListItem = GetSelectedBeheshtiListItem();
if (beheshtiListItem != null)
{
String query =
"DELETE FROM بهشتیان WHERE ID =" + beheshtiListItem.id;
ExecuteNonQuery(query);
RefreshBeheshtiList();
}
}

mohammadali1375
پنج شنبه 21 اسفند 1393, 13:34 عصر
آقا ممنون. مشکل حل شد. باید کلوز میکردم آخر اجرای کوری