PDA

توجه ! این یک نسخه آرشیو شده می باشد و در این حالت شما عکسی را مشاهده نمی کنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کتابخانه توابع شمسی در کریستال ریپورت دات‌نت



TAHA
12-04-2009, 09:51 PM
برنامه‌نویس: م.امین تقدسی
انجمن تخصصی برنامه‌نویسی دات‌نت سورس
منبع www.DotNetSource.com (http://www.dotnetsource.com/)

از عمده مشکلاتی که در استفاده از کریستال ریپورت در محیط‌های برنامه‌نویسی با آن مواجه هستیم نبود امکان تبدیل تاریخ میلادی به شمسی است که تقریبا تا به امروز بدون یک راه‌حل جامع و مطمئن باقی مانده بود. اغلب سعی میکردیم از طریق پارامتر، تاریخ را به درون محیط گزارش‌گیری انتقال دهیم که این مورد هم مشکلات خاص خودش را داشت.
مدتها پیش در صدد تهیه یک کتابخانه بودم که امکانات تبدیل تاریخ میلادی به شمسی را در محیط کریستال ریپورت فراهم کند. با توجه به امکان استفاده از کتابخانه‌های کاربر(User Function Library) که از نسخه‌های 8 به بعد فراهم شده بود، با کمی وقت امروز مشکل تبدیل تاریخ را حل کردم و در اینجا در اختیار دوستان برنامه‌نویس قرار میدهم. این کتابخانه بعنوان یه Assembly در محیط دات‌نت توسعه یافته است و در عملیات تبدیل تاریخ هم از کلاس PersianCalendar خود دات‌نت استفاده شده است.

توابعی که در این کلاس معرفی شده‌اند به قرار زیرند:
(کلیه پارامترهای mDate‌ از نوع DateTime و تاریخ میلادی است.)

http://pnu-club.com/imported/mising.jpg

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


Gacutil –if CRUFL_PersianDate.Dll


در Command Prompt دات‌نت، نصب خواهد شد که جهت اطمینان از نصب میتوانید به مسیر \Windows\Assembly رجوع کنید تا لیست اسمبلی‌های نصب شده را ببینید. با نصب این اسمبلی، کریستال ریپورت از طریق رابط u2lcom.dll‌ میتواند به این توابع دسترسی داشته باش

http://pnu-club.com/imported/mising.jpg


نحوه استفاده از این توابع هم مانند سایر توابع خود کریستال ریپورت است.
برای شروع یک گزارش ساده بسازید و سپس از طریق Formula Fields یک فرمول تعریف کنید و formula Editor‌ را باز کنید. حال در بخش Function Tree مسیر زیر را باز کنید:

http://pnu-club.com/imported/mising.jpg

کلیه توابع موجود در این کتابخانه با پیشوند PersianDate‌ نام‌گذاری شده‌اند تا با سایر توابع متمایز باشند.
در این فرمول فیلد CreationDate از نوع DateTime است که توسط تابع cdate‌ کریستال، به پارامتر قابل قبول تابع ما تبدیل خواهد شد.

تصویر زیر یک مثال ساده‌ای از شیوه استفاده از توابع موجود را نشان میدهد که سورس آن ضمیمه شده است.

http://pnu-club.com/imported/mising.jpg

سورس این کتابخانه + همین مقاله در قالب PDF هم عینا تقدیم میشود تا در صورت تمایل برای توسعه و همینطور آشنایی با ساخت این نوع کتابخانه‌ها بعنوان راهنما در دسترس باشد.

سورس و کل مقاله به شکل PDF

www.DotNetSource.com/Download/Crystal_Report_PersianDate_(UFL).pdf (http://www.dotnetsource.com/Download/Crystal_Report_PersianDate_%28UFL%29.pdf)
www.DotNetSource.com/Download/CRUFL_PersianDate.rar (http://www.dotnetsource.com/Download/CRUFL_PersianDate.rar)
www.DotNetSource.com/Download/Crystal_Report_PersianDate_VB_Sample.rar (http://www.dotnetsource.com/Download/Crystal_Report_PersianDate_VB_Sample.rar)