PDA

View Full Version : سوال: نحوه تشخیص داده های تکراری



vid4259
چهارشنبه 15 مرداد 1393, 00:23 صبح
سلام
من یه دیتا بیس از نوع اکسس دارم که یک سری شماره تلفن توش دارم حالا می خوام دو کار روش انجام بدم اول اینکه تعداد تکرار هر شماره رو بدونم و دوم اینکه شماره های تلفن که چند بار تکرار شده رو حذف کنم یعنی شماره تکراری نداشته باشم

aminmousavi
چهارشنبه 15 مرداد 1393, 03:14 صبح
سلام دوست عزیز .
کد زیر رو تست کن :

فرضیاتی که در نظر گرفتم برای نوشتن کد :

- تمام عملیات میخوای در C# انجام شه .
- جدول اکسس شما دارای دو تا ستون یکی id و یکی دیگر shomareTel هست
- خروجی جدول شما از دیتابیس یک Dataset هست .




DataTable dtTekrar = new DataTable();
dtTekrar.Columns.Add("number"); //shomare telphone
dtTekrar.Columns.Add("count"); //tedade tekrar
if (ds != null && ds.Tables.Count > 0)
{
DataRow[] findingRows;
for (int i = 0; i < count; i++)
{
string num = ds.Tables[0].Rows[i][1].ToString();
findingRows = dtTekrar.Select("number = '" + num + "'");
if (findingRows.Length == 0)
{
findingRows = ds.Tables[0].Select("shomareTel = '" + num + "'");
dtTekrar.Rows.Add(num, findingRows.Length - 1);
}
}
}



خروجی : یک Datatable به شما میدهد که ستون اول شماره تلفن ، و ستون دوم تعداد تکرار هست .
برای اینکه تکراری ها رو هم پاک کنی هم میتونی جدول اکسس رو به طور کل پاک کنی و یک شمارنده بزاری و شماره های درون دی تا تیبل dtTekrar رو درج کنی توی اکسس
یا میتونی از کد زیر استفاده کنی (در بدنه if اول بزار)





for (int i = 0; i < dtTekrar.Rows.Count; i++)
{
bool chk = false;
for (int j = ds.Tables[0].Rows.Count-1; j>=0 ; j--)
{
if (ds.Tables[0].Rows[j][1].ToString() == dtTekrar.Rows[i][0].ToString())
{
if (chk == false)
{
chk = true;
}
else
{
//amaliyat delete ro anjam midi az accses baraye record j om az ds
//// "DELETE FROM esmeTable WHERE id="+ds.Tables[0].Rows[j][0].toString()
}
}

}
}

nunegandom
چهارشنبه 15 مرداد 1393, 06:45 صبح
با سلام
بریز توی دوتا لیست، بعد با هم مقایسه شون کن... تموم که شد هرچی توی لیست مونده بود رو ثبت کن، اینم ی راه حل