PDA

View Full Version : مشکل در چاپ 10 رکورد آخر یک دیتاگرید در خودش



mahdi-1
دوشنبه 18 آذر 1392, 18:33 عصر
سلام
من یه دیتا گرید دارم که داده هاشو از یه کوئری میگیره .
مثلا من میخوام وقتی تعداد اینر رکورد ها از 10 تا بیشتر شد فقط ده تای آخری توش بمونه و بقیه حذف بشن اینم کد منه:

if (((Frm_Main)this.MdiParent).dg_ten_ac.Rows.Count > 10)
{
a = (((Frm_Main)this.MdiParent).dg_ten_ac.Rows.Count);
b = a - 10;

for (int i = 1; i <= b; i++)
((Frm_Main)this.MdiParent).dg_ten_ac.Rows.RemoveAt (i);
}


ولی این تیکه کد این کارو نمی کنه و این ارور رو میده.:
اینم عکس ارور (http://up.temkade.com/images/m5931_Untitled.png)

khokhan
دوشنبه 18 آذر 1392, 18:55 عصر
سلام
من یه دیتا گرید دارم که داده هاشو از یه کوئری میگیره .
مثلا من میخوام وقتی تعداد اینر رکورد ها از 10 تا بیشتر شد فقط ده تای آخری توش بمونه و بقیه حذف بشن اینم کد منه:

if (((Frm_Main)this.MdiParent).dg_ten_ac.Rows.Count > 10)
{
a = (((Frm_Main)this.MdiParent).dg_ten_ac.Rows.Count);
b = a - 10;

for (int i = 1; i <= b; i++)
((Frm_Main)this.MdiParent).dg_ten_ac.Rows.RemoveAt (i);
}


ولی این تیکه کد این کارو نمی کنه و این ارور رو میده.:
اینم عکس ارور (http://up.temkade.com/images/m5931_Untitled.png)
این کار رو توی کوئری به راحتی می تونی انجام بدی و این همه کد هم لازم نیست

"SELECT TOP 10 * FROM kala"
مگه اینکه دلیل خاصی داشته باشین:لبخند:

mahdi-1
دوشنبه 18 آذر 1392, 19:00 عصر
این کار رو توی کوئری به راحتی می تونی انجام بدی و این همه کد هم لازم نیست

"SELECT TOP 10 * FROM kala"
مگه اینکه دلیل خاصی داشته باشین:لبخند:
من میخوام ده تا جنس آخری که یه مشتری خریده رو چاپ کنم.
که این اطلاعات مستقیم از جدولی خونده میشه که شماره ملی چند تا مشتری توش هست
اول من میآم از اون مشتری با یه شماره ملی خاص کل رکورد هاشو تو دیتا گرید ریختم و بعد میخوام از این همه رکورد فقط 10 تای آخری رو برگردونه.
یعنی شما می گید که میشه در حین گرفتن این کوئری تعداد رکورد هایی که می خواهیم رو بازیابی کنیم ؟ :متعجب:چه طوری؟:متفکر:
من کوئری مو با از linq گرفتم :
یعنی نوشتم
dg_ten_ac.DataSource = db.tbl_transactions.Where(c => c.Account_num == qsearch_customer.account_number).Select(c=>c)(
تو اینجا چه طوری باید بگم top 10?

khokhan
دوشنبه 18 آذر 1392, 19:00 عصر
واگه از معماری linq یا ef استفادهمی کنی می تونی اینطوری بنویسی :


var data = (from p in db.kala
orderby p.IdentityKey descending
select p).Take(10);

khokhan
دوشنبه 18 آذر 1392, 19:05 عصر
این کوئری ها فقط ده تا رکورد آخری رو براتون برمی گردونند و اگه شرط خاصی مد نظرتون بود می تونین بر این اساس اعمال کنین:لبخند:

mahdi-1
دوشنبه 18 آذر 1392, 19:18 عصر
واگه از معماری linq یا ef استفادهمی کنی می تونی اینطوری بنویسی :


var data = (from p in db.kala
orderby p.IdentityKey descending
select p).Take(10);

خیلی خیلی ممنون از پاسختون فقط اون قسمت آخر رو متوجه نشدم
orderby p.IdentityKey descending
الان به کمک شما اینطوری نوشتمکه داره 1 رکورد آخر رو میده ولی واقعا رکورد آخر نیست بلکه رکورد اوله؟ چرا:متفکر:
db.tbl_transactions.Where(c => c.Account_num == qsearch_customer.account_number).Select(c=>c).Take(1)
اون قسمت مرتب سازی صعودی نزولی که گفتین رو کجای این دستور باید بنویسم؟:متفکر:

mahdi-1
دوشنبه 18 آذر 1392, 19:29 عصر
دمت گرم داداش خیلی مردی مشکلم حل شد.
:قلب: