PDA

View Full Version : سخت ترین حالت گزارش گیری



riyahiyan
شنبه 25 آذر 1385, 22:33 عصر
سلام دوستان
توی این چندین سالی که برنامه نوشتم هیچ وقت اینقدر جام نکرده بودم که الان. یه جدول دارم با فیلدای Id,Book,Grade1,...,Grade5 کلید اصلی جدول Id+Book چطور میتونم برای همه دانش آموزان کارنامه چاپ کنم.(ترجیحا با DataReport)

نکته : عموما وقتی DataSource یک DataRepot رو به یک جدول Set میکنیم هر رکورد نمونه مجزایی است اما داده ها در این جدول بصورت زیر هستند:

100 دینی 12 15 18.25
100 عربی 18.75 16 18 15 20
100 فیزیک 20 19 18
101 دینی 12 15 18.25
101 عربی 18.75 16 18 15 20
101 فیزیک 20 19

شدیدا فوری جواب میخم. با تشکر

A.Farzin
شنبه 25 آذر 1385, 23:10 عصر
لازم است تا در رکوردست یک گروهبندی برحسب ID دانشجو انجام دهید و اطلاعات را با همان حالت گروهبندی شده روی DataReport بریزید. در تنظیمات گزارش خود کاری کنید که هر گروه در یک صفحه مجزا چاپ شود. به این ترتیب شما با یک فرمان چاپ قادرید کارنامه تمام دانشجویان را به ترتیب شماره دانشجویی چاپ نمایید

yavari
سه شنبه 28 آذر 1385, 10:53 صبح
سلام

من دیتا ریپورتو زیاد کار نکردم چون همیشه یه جورائی محدودم کرده ، البته شاید اشتباه می کنم !!!
اما این گزارش گیری هم شدن داره !

یه راهش اینه !!! ( که مسلما راههای خیلی بهتر دیگه ای هم هست )

شما بیاین با استفاده از DISTINCT آیدیا رو در بیارین و تو جای دیگه (مثلا یه تیبل ) داشته باشین

بعد یه لوپ میخواین بدین صورت

For i=1 to rs.RecordCount
' دستورات
next i
در این لوپ در مرحله اول آیدی اولین رکورد رو بخونید و بوکمارکش کنید بعد به تیبل موجود رفته و کلیه اطلاعات مربوط به اون آیدی رو دربیارید
{
یه نکته ای رو داخل پرانتز عرض کنم اینکه یه روش که به نظر من خوبه اینه که بیاین از کاغذای طراحی شده استفاده کنین مثلا شما برا هر دانش آموز میخواین کارنامه ای در سایز A5 داده بشه که مثلا تیبلش فلان جور رسم شده باشه ، نمی دونم بالاش اسم آموزشگاه خورده باشه یا حتی پائینش اطلاعات ثابتی باشه که رو همه کارنامه ها بخوره !
مزیت این روش اینه که ضمن اینکه شما یه بار کار طراحی رو انجام میدین و کارنامه های طراحی شده رو میدین به پرینتر ، خدائیش پرینتر دعاتون میکنه :لبخندساده: چون دیگه مجبور نیست برا تمام دانش آموزان کارای تکراری رو انجام بده ! و فقط مقادیرو تو مکانای خودش میزنه و کلی سرعت کارتون بالا میره
}
همونطوری که می دونید با استفاده از شی پرینتر قادر خواهیم بود که بصورت میلیمتری تعیین کنیم هر چیزی کجای صفحه ظاهر بشه
فقط یه نکته می مونه اونم اینه که اسم متغیرا رو به گونه ای متناظر با i در نظر بگیرین با بتوان تمام فیلدا رو تو لوپ بگنجونید
Printer.Print ...
یه خاصیت جالبی که این شی داره اینه که تا دستور EndDoc رو بهش ندی خروجی نداره یعنی هیچی چاپ نمی کنه.
پس کافیه همین که مطمئن شدیم همه کارنامه ها رو گرفته این دستورو بهش بدیم تا کارنامه ها رو پشت سر هم بده بیرون !

امیدوارم منظورتونو درست گرفته باشم !!!
موفق باشید

yavari
چهارشنبه 29 آذر 1385, 20:16 عصر
سلام

اینم یه نمونه مثال که می خواستین !!!

موفق باشید

riyahiyan
چهارشنبه 29 آذر 1385, 21:56 عصر
با تشکر فروان از شما دوستان خوصاً جناب یاوری که در این مسئله پیگیری نمودند.
دوست عزیر A.Farzin مشکل حادتر از این است که با Groupby وامثال آن حل شود چراکه با این روش فقط میتوان بصورت تک تک کارنامه صادر کرد اما ما کارنامه کلی میخواهیم اگر تست کنید به مشکلاتی که در این راه حل وجود دارد بر خواهید خورد البته ممنون میشم که نظرتون رو بعد از تست بزارید.

روش یاوری عزیز هم قطعا جواب میدهد و تنها مشکل آن سختی کار با آن است که واقعا آخرین و قطعا بهترین روش می باشد.
اگر دوستان در روند این تاپیک مطلبی دارند دریغ نکنند.