View Full Version : طراحی کارنامه با اکتیو ریپورت(خواهشا کمک کنید)
maryamb
شنبه 09 شهریور 1387, 15:29 عصر
با سلام .
راستش چند وقتیه هر چی سوال می برسم به نتیجه نمی رسه !!!
حداقل این یکی رو جواب بدین.کارم بد جور لنگ مونده.
به این تصویر نگاه کنید . چطوری این کارنامه رو طراحی کرده؟
آخه من تا حالا تو ریپورت گیری یه سطر رو طراحی می کردم و توش فیلد ها رو می ذاشتم . بعد اون فیلد ها رو به بانک متصل می کردم و به تعداد فیلد های بانک ، ردیف اضافه می شد و گزارش ساخته می شد .ولی اینجا انگار جدول رو بطور کامل طراحی کرده.آیا اینطوریه؟
اگه اینطوریه پس فیلد هارو چطور به بانک وصل کنم؟
مثلا برای نام درس من اینجوری بلدم که یه فیلد بزارم و اونو به فیلد نام درس تو بانک متصل کنم و خودش به تعداد درسها ردیف اضافه کنه.
ولی اینجا انگار یه کار دیگه کرده.
خواهش می کنم اگه کسی بلده توضیح بده
ضمنا می خواستم ببینم چه جور میشه چهار تا کارنامه که البته اطلاعاتشون با هم فرق می کنن توی یه صفحه چاپ بشه .یعنی یه صفحه ی a4 به 4 قسمت تقسیم بشه ؟؟
vahid_d_0101
شنبه 09 شهریور 1387, 16:05 عصر
خوب شما میتونید چیزهایی که همیشه ثابت هستند رو تو یه عکس قشنگ بکشید و بعد عداد و اسم و ... را تو اون عکس بزاری و پرینت بگیری که برای این کار من یه تاپیک داشتم که یه مقاله توش بود خیلی خیلی میتونه بهت کمک کنه
maryamb
شنبه 09 شهریور 1387, 16:08 عصر
اخه اسم درسها هم ثابت نیست.
تازه اگه هم بخوام از عکس استفاده کنم ، تو فیلد نمره همون مشکل رو دوباره دارم دیگه.
مثلا اگه برای کارنامم 17 ردیف در نظر بگیرم ، نمی تونم 17 تا فیلد بزارم و هر کدوم رو به فیلد نمره ی جدول وصل کنم !!!
Mbt925
شنبه 09 شهریور 1387, 16:26 عصر
در این مورد نیازی نیست که فیلد ها رو به چیزی متصل کنید.
چون هر درسی تعداد نمره های مشخص و محدود داره.
شکل جدول رو کامل طراحی کنید و Label و TextBox های موردنیاز رو در مکان ها موردنظر قرار بدید.
هنگام گزارش گیری، مقادیر رو در محل های مربوطه قرار بدید.
یه نمونه ی خیلی ساده:
vahid_d_0101
شنبه 09 شهریور 1387, 16:26 عصر
ببینید این pdf کمکتون میکنه
http://barnamenevis.org/forum/attachment.php?attachmentid=22424&d=1220002783
maryamb
شنبه 09 شهریور 1387, 16:36 عصر
در این مورد نیازی نیست که فیلد ها رو به چیزی متصل کنید.
چون هر درسی تعداد نمره های مشخص و محدود داره.
شکل جدول رو کامل طراحی کنید و Label و TextBox های موردنیاز رو در مکان ها موردنظر قرار بدید.
هنگام گزارش گیری، مقادیر رو در محل های مربوطه قرار بدید.
ببخشید مشکل اینجاست که در پایگاه داده ی من نمره ها داخل فیلد نمره قرار دارن و یک فیلد به نام نمره دارم و اینطور نیست که مثلا 10 تا فیلد نمره داشته باشم.
یعنی برای هر نمره ی بعدی باید پایگاه داده ی من به اصطلاح یدونه جلوتر بره.
(adodc1.recordset.movenext)
و از یه همچین متدی هم تو اکتیو ریپورت نمی شه استفاده کرد.واصلا نمیدونم درست هست یا نه
ضمنا تعداد و نوع درسها هم برای هر دانش آموز متفاوته
Mbt925
شنبه 09 شهریور 1387, 16:47 عصر
هیج تفاوتی نمی کنه که همشون توی 1 فیلد باشن یا نه.
توی مثالی که قرار دادم، مقدار 4 فیلد رو در 4 Label قرار دادم.
حالا فرض می کنیم هر 4 مقدار در یک فیلد قرار دارن:
DataReport1.Sections("Section1").Controls("lblOlum").Caption = rec.Fields("Num1")
rec.MoveNext
DataReport1.Sections("Section1").Controls("lblRiazi").Caption = rec.Fields("Num1")
rec.MoveNext
DataReport1.Sections("Section1").Controls("lblFarsi").Caption = rec.Fields("Num1")
rec.MoveNext
DataReport1.Sections("Section1").Controls("lblZaban").Caption = rec.Fields("Num1")
maryamb
شنبه 09 شهریور 1387, 16:52 عصر
ممنون . ولی اخه در مجموع بیشتر از 100 تا درس هست که برای هر دانش آموز باید فیلتر بشه و فقط درسهای خودشو نشون بده و نمره های گرفته شده در درسها.
آیا با این روش ، سرعت پایین نمیاد؟
ضمنا من از اکتیو ریپورت استفاده می کنم ، در اکتیو ریپورت آیا این متد کارایی داره؟چون برای سوال قبلیم که کارت دانش آموزی بود همچین کاری کردم ولی متد MOVE NEXT رو قبول نکرد .من این کد رو داخل اکتیو ریپورت نوشته بودم
maryamb
یک شنبه 10 شهریور 1387, 14:14 عصر
بزارید بهتر توضیح بدم . تا شاید یکی پیدا بشه منو به نتیجه برسونه.
ببینید من تو پایگاه دادم فرض کنید این جدول ها رو دارم :
دانش آموز : شماره دانش آموزی و نام و نام خانوادگی
درس : کد درس و نام درس و تعداد واحد
نمره : شماره دانش آموزی و کد درس و نمره
البته جدولم وسیع تر هست .حالا فرض کنید برای یه همچین چیزی بخوایم کارنامه تهیه کنیم.
می خوایم کارنامه اندازش استاندارد باشه و برای هر دانش آموز به نسبت تعداد درسهاش کوچیک و بزرگ نباشه.
فرض کنید 100 تا دانش آموز هم داریم و 200 تا درس که هر کدوم ممکنه 15 تا یا 16 تا یا ... از درسهای مختلف انتخاب کردن.
من برای اینکه درسهای یک دانش آموز خاصی رو نشون بده از فیلتر یا اس کیو ال استفاده می کنم.
حالا مشکلم فقط در طراحی کارنامه هست.
می خوام کارنامه ها همونطور که تو عکس معلومه ، یه اندازه باشن.
باید چیکار کنم؟
لطفا اگه کسی می دونه جواب بده.
وقت کم دارم
ali_habibi1384
دوشنبه 11 شهریور 1387, 07:38 صبح
بجای استفاده از ابزار خاصی کلیه اطلاعاتتون رو در یک فرم بصورت گزارش طراحی کنید و از اون فرم با دستور me.printform چاپ بگیرید.
vbhamed
دوشنبه 11 شهریور 1387, 10:09 صبح
سلام
استفاده از زير گزارش يا SubReport راه حل شماست
اكثر گزارشگرها پشتيباني مي كنند
ASKaffash
دوشنبه 11 شهریور 1387, 17:16 عصر
سلام
خیلی ساده است ActiveReport واقعا Dynamic است یعنی اینکه شما کارنامه را باتعدادی فیلد متصل طراحی میکنید و بجای بخش های متغیر شما Lable روی گزارش ارایش میدهید اینطوری مثلا طوری طراحی میگردد که طول یک کارنامه ثابت است خوب مسلم است که این lable ها را در بخش Detail قرار میدهید حال یک Adodc روی گزارش قرار میدهید (ActiveX را ActiveReport پشتیبانی میکند) و درون واقعه Format شما RecordSource آن را براساس شماره کارمندی تغییر میدهید و با استفاده از متدهای Next و ... نام درس و نمره و ... را به lable های قرارداده شده نسبت میدهید همانطور که گفتم در ActiveReport دست شما در زمان اجرای رکورد به رکورد باز است و میتوانید متن و رنگ و ... همه کنترلها را عوض کنید اینطوری است که شما میتوانید یک گزارش کاملا دلخواه ایجاد کنید در ضمن چون ریز نمرات نیز بصورت جدول ثابت قرار است ارائه گردد میتوانید روی گزارش یک کنترل VSFlexGrid یا MSFlexGrid یا ... قرار دهید که بازهم کار راحتر میشود.
maryamb
دوشنبه 11 شهریور 1387, 17:34 عصر
می شه بیشتر توضیح بدید یا یه نمونه خیلی کوچیک بزارین ؟؟؟
چطوری adodc بزارم ؟؟وقتی یه اکتیو ریپورت به پر.ژم ادد می کنم موقعی که فعاله ، کنترلهای خودشو فقط قبول می کنه و کنترل های وی بی غیر فعالن ؟؟
کارنامه رو تو بخش دیتیل طراحی کنم کلشو ؟
کدوم فیلد ها متصل باشن؟
به این پست هم اگه می شه نگاه کنید . همین سواله !!! ولی کانل تر پرسیدمش
http://barnamenevis.org/forum/showthread.php?t=120446
ASKaffash
دوشنبه 11 شهریور 1387, 17:54 عصر
سلام
در جعبه ابزار کنترلهای ActiveReport نگاه کنید شاید تابه حال دقت نکردید اسمش ActiveX Control است وقتی انتخاب کنید لیستOCX ها برایتان می آید خوب مثل فرم ADODC را انتخاب کنید
ASKaffash
دوشنبه 11 شهریور 1387, 18:00 عصر
می شه بیشتر توضیح بدید یا یه نمونه خیلی کوچیک بزارین ؟؟؟
چطوری adodc بزارم ؟؟وقتی یه اکتیو ریپورت به پر.ژم ادد می کنم موقعی که فعاله ، کنترلهای خودشو فقط قبول می کنه و کنترل های وی بی غیر فعالن ؟؟
کارنامه رو تو بخش دیتیل طراحی کنم کلشو ؟
کدوم فیلد ها متصل باشن؟
به این پست هم اگه می شه نگاه کنید . همین سواله !!! ولی کانل تر پرسیدمش
http://barnamenevis.org/forum/showthread.php?t=120446
سلام
یادم رفت بگم من با همین روش یک فیش حقوق یک سیستم بزرگ طراحی کردم :
maryamb
دوشنبه 11 شهریور 1387, 18:08 عصر
چه جالب تا حالا ندیده بودم.
می شه یه نمونه کوچیک برام بفرستین .(_خواهشا) یه جوری که مشکلم حل شه؟
maryamb
دوشنبه 11 شهریور 1387, 18:16 عصر
من متوجه نشدم مثلا کارنامه ی 5 تا دانش آموز رو چطوری طراحی کنم؟
یعنی چطوری بگم تا اینجا نمره های این دانش آموز بود ، بقیه نمره ها رو تو یه کارنامه دیگه بزار ،
الی آخر
در واقع برای نمایش تک تک نمره ها می دونم چی کار کنم همون با متد next یکی یکی به لیبل ها مقدار میدم .
ولی وقتی چند تا دانش آموز هست باید چیکار کنم؟
ASKaffash
دوشنبه 11 شهریور 1387, 18:17 عصر
سلام
مثل این کد :
Private Sub Detail_Format()
Me.Adodc1.ConnectionString = Me.DataControl1.ConnectionString
Me.Adodc1.RecordSource = "Select Count(*) As Cnt From Prs_Child Where C_Prs=" & Me.DataControl1.Recordset!C_Prs
Me.Adodc1.Refresh
Me.Label1.Caption = Me.Adodc1.Recordset!Cnt
End Sub
maryamb
دوشنبه 11 شهریور 1387, 18:26 عصر
می شه یه توضیح کوچیک در مورد کدتون هم بدین ؟؟ !!
تو این پست نمونه جدولم رو هم گذاشتم
http://barnamenevis.org/forum/showthread.php?t=120446 (http://barnamenevis.org/forum/showthread.php?t=120446)
ASKaffash
دوشنبه 11 شهریور 1387, 18:41 عصر
سلام
برای حل مسئله شما :
شما اکتیو ریپورت را به فهرست شاگردان متصل میکنید و نام و شماره و .. را به فیلدهای مربوطه متصل میکنید
یک ADO روی ریپورت قرار میدهید حال در رویداد Format شما با ارائه شماره دانش آموزی از رکورد جاری گزارش RecordSource جدید را میسازید و با یک حلقه روی این Ado حرکت کرده و مقادیر نمره و نام درس را به Lable های خالی ایجاد شده نسبت میدهید
ولی در مورد سورس نمونه :
برای هر رکورد گزارش یک دستور SQL بصورت متغیر ایجاد و محاسبه میگردد و به یک Lable نسبت داده میشود اینطوری با وجوداینکه لیبل متصل به هیچ فیلدی نیست ولی بصورت پویا درون گزارش در حال محاسبه است.
maryamb
دوشنبه 11 شهریور 1387, 18:44 عصر
ممنون تا اینجا شو منوجه شدم . ولی چجوری برم رو دانش آموز بعدی و کارنامه دوم و ... رو بسازم؟
ASKaffash
دوشنبه 11 شهریور 1387, 18:54 عصر
سلام
چون گزارش اکتیو ریپورت شما به جدول دانش آموز وصل است در بارهای بعدی درون رویداد Format مقدار فیلد شما شماره دانش آموزی نفرات بعدی است و مثل آن مثال که گذاشته بودم فیلد C_Prs مشخصه فرد بعدی و بعدی و ... است که خود گزارش دارد رکورد را جابجا میکند
maryamb
دوشنبه 11 شهریور 1387, 19:02 عصر
امتحان می کنم . ببینم به نتیجه می رسم یا نه.
به هر حال لطف کردین.
maryamb
دوشنبه 11 شهریور 1387, 22:20 عصر
با سلام . من فرمايشات شما رو اجرا كردم . ولي تا اين مرحله بيشتر نتونستم پيش برم.
حالا از دوستان محترم مي خوام به اين تيكه برنامه نگاه كنن و كمك كنن تا درس ها رو هم بتونم وارد كارنامه كنم.
من ديتا بيسم رو هم قرار دادم.
نمره ها از روي كوئري بنام karname1 بايد خونده بشن.
اما هر كاري ميكنم اررور مي ده و نمي تونم با adodc1 به ليبل ها مقدار بدم
maryamb
سه شنبه 12 شهریور 1387, 17:45 عصر
از دوستان کسی نیست این تیکه برنامه رو کامل کنه؟
هر کاری می کنم اررور می ده
hrj1981
سه شنبه 12 شهریور 1387, 19:55 عصر
كمي در سورسهاي برنامه دستكاري شد، اميدوارم كمكتان كند.
maryamb
سه شنبه 12 شهریور 1387, 20:58 عصر
با تشكر كه برناممو كامل كرديد. ولي مشكل اينجاست كه اينطوري اندازه كارنامه متغير مي شه .
آيا راهي هست؟
maryamb
چهارشنبه 13 شهریور 1387, 16:19 عصر
ضمنا معدل رو کجا محاسبه کنم و فیلدش رو در کدوم قسمت گزارش قرار بدم ؟؟؟
محاسبات مربوط به بدس آوردن معدل رو در کدوم قسمت گزارش بنویسم؟
hrj1981
چهارشنبه 13 شهریور 1387, 17:25 عصر
مي خواهي معدل در گزارش محاسبه شود ويا قبلا محاسبه شده و فقط مي خواهي نمايش دهي
vbhamed
چهارشنبه 13 شهریور 1387, 18:27 عصر
سلام
جواب اينجا
http://www.barnamenevis.org/forum/showthread.php?p=586863&posted=1#post586863
maryamb
چهارشنبه 13 شهریور 1387, 20:41 عصر
جناب vbhamed ممنون از نمونه تون ولي اررور مي ده و كار نمي كنه .
وقتي پروژه رو باز مي كنم اصلا نمي تونه لود شه. اگه ممكنه يه نگاهي بندازين و اونو دوباره آپلود كنين.
در مورد معدل ، حساب كردن معدل قانون خاصي داره . مي خوام محاسباتش موقع گرفتن گزارش ، دانش آموز به دانش آموز حساب بشه
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.