PDA

View Full Version : سوال: جلوگیری از نمایش رکورد تکراری در datagrid



Me3ter
پنج شنبه 16 شهریور 1391, 07:08 صبح
سلام
من یک برنامه ثبت شماره تلفن درست کردم که هرنفر که وارد میکنی میتونه چندتا شماره داشته باشه واسه این کار یک جدول رابط بین جدول شماره و جدولی که اسم و فامیل توش ذخره میشه قرار دادم که که ایدی شخص و ایدی شماره تلفن رو ذخیره میکنه برای نمایش اطلاعات هر فرد که مثلا 3 تا شماره داره سه بار نشون میده با شماره های مختلفش که من اومدم شماره هارو قرار دادم توی یک ستون از نوع کمبو که همه شماره هاشو نشون بده ولی بازم هر شخص چندبار نمایش داده میشه
اگر از دوستان کسی منو راهنمایی کنه که سطر تکراری رو چه طور تو دیتا گرید ویو فیلتر کنم ممنون میشم

amir-aa
پنج شنبه 16 شهریور 1391, 07:25 صبح
برو توی دیتاستی که ساختی بعد به جای select بنویس select distinct

Me3ter
پنج شنبه 16 شهریور 1391, 07:33 صبح
برو توی دیتاستی که ساختی بعد به جای select بنویس select distinct
ممنون ولی select distinct فقط واسه یک ستونه من داخل دستور سکلتم چندا ستون رو انتخاب کردم کد رو می زام ببینید select tblpersons.personid,name,lastname,tellnumber,group name,sendsms FROM dbo.tblgroup INNER JOIN" +
" dbo.tblpersons ON dbo.tblgroup.personid = dbo.tblpersons.personid INNER JOIN" +
" dbo.tblrgp ON dbo.tblgroup.groupid = dbo.tblrgp.groupid AND dbo.tblpersons.personid = dbo.tblrgp.personid INNER JOIN" +
" dbo.tblrnp ON dbo.tblpersons.personid = dbo.tblrnp.personid INNER JOIN" +
" dbo.tblnumber ON dbo.tblrnp.numberid = dbo.tblnumber.tellid

amir-aa
پنج شنبه 16 شهریور 1391, 08:31 صبح
فرقی نمیکنه شما یک کلید براش در نظر بگیر و بر اساس اون orderby بنویس
من تستش نکردم اما قاعدش همینه.میتونید روی منابع خارجی چک کنید.اونا خیلی بهترن

amir-aa
پنج شنبه 16 شهریور 1391, 08:39 صبح
صد درصد نمیتونم بگم اما فکر میکنم یکم کوری شما غیر اصولیه. ببینید شما نباید برای هر شماره تلفن 1 سطر ایجاد کنید توی جدول اسم و فامیل.
یک اسم و فامیل بذارید و یک کد هم داشته باشه.دیگه خود شماره تلفن ها که نمیخواد کد بندی بشه.فقط یک سطر باید بذارید که کد اسم و فامیل رو بذاره توش یعنی ما کلا یدونه کد میخوایم.
فرض بگیر آقای احمدی با کد 2
کد 2 رو توی هر بار که شماره تلفن برای آقای احمدی ذخیره میکنی insertکن

Me3ter
پنج شنبه 16 شهریور 1391, 17:07 عصر
صد درصد نمیتونم بگم اما فکر میکنم یکم کوری شما غیر اصولیه. ببینید شما نباید برای هر شماره تلفن 1 سطر ایجاد کنید توی جدول اسم و فامیل.
یک اسم و فامیل بذارید و یک کد هم داشته باشه.دیگه خود شماره تلفن ها که نمیخواد کد بندی بشه.فقط یک سطر باید بذارید که کد اسم و فامیل رو بذاره توش یعنی ما کلا یدونه کد میخوایم.
فرض بگیر آقای احمدی با کد 2
کد 2 رو توی هر بار که شماره تلفن برای آقای احمدی ذخیره میکنی insertکن

سلام من برای هر شماره یک سطر درست نکردم
زمان ورود شماره تلفنو جدید شماره ایدی شخص رو و شماره ایدی تلفن رو ذخیره میکنم توی یک جدول جدا
یه چیزی مثل همینیه که شما گفتی الا مشکل من فقط با گریده یه کدی می خوام که مثلا هر شخص ایدی یک بار تو گرید نمایش داده بشه خودم هر راهی رفتم جواب نگرفتم

Me3ter
پنج شنبه 16 شهریور 1391, 18:31 عصر
کسی نیست یه روشی بگه؟؟

Me3ter
پنج شنبه 16 شهریور 1391, 18:57 عصر
یعنی وقعا کسی نمیتونه کمک کنه؟

tooraj_azizi_1035
پنج شنبه 16 شهریور 1391, 22:03 عصر
باید افراد رو بر حسب نام و نام خانوادگی Group BY کنی تا اسم و فامیل یک بار نمایش داده بشه کمبو باکس هم باید داده اش رو بر حسب PersonID پر کنه:

SELECT TelNo FROM Persons WHERE PersonID=@PersonID

Me3ter
یک شنبه 19 شهریور 1391, 00:28 صبح
یگ عکس میزارم ببینین بلکه کمکی شد92565

Me3ter
چهارشنبه 22 شهریور 1391, 04:25 صبح
اینم از جوابی که می خواستم for (int i = 0; i < dgv.Rows.Count; i++)
if (dgv.Rows[i].Cells[0].Value == dgv.Rows[i + 1].Cells[0].Value)
dgv.Rows.RemoveAt(i );

Mahmoud.Afrad
چهارشنبه 22 شهریور 1391, 06:54 صبح
برای چی یکبار همه سطرها را اضافه کنی و بعد تکراری ها را حذف کنی؟؟!!

همونطور که گفته شده میتونید از distinct روی idشخص استفاده کنید تا هر آی دی یک بار بیاد. مثال:
select distinct tbl.id,* from tbl