برنامهنویس: م.امین تقدسی
انجمن تخصصی برنامهنویسی داتنت سورس
منبع www.DotNetSource.com
از عمده مشکلاتی که در استفاده از کریستال ریپورت در محیطهای برنامهنویسی با آن مواجه هستیم نبود امکان تبدیل تاریخ میلادی به شمسی است که تقریبا تا به امروز بدون یک راهحل جامع و مطمئن باقی مانده بود. اغلب سعی میکردیم از طریق پارامتر، تاریخ را به درون محیط گزارشگیری انتقال دهیم که این مورد هم مشکلات خاص خودش را داشت.
مدتها پیش در صدد تهیه یک کتابخانه بودم که امکانات تبدیل تاریخ میلادی به شمسی را در محیط کریستال ریپورت فراهم کند. با توجه به امکان استفاده از کتابخانههای کاربر(User Function Library) که از نسخههای 8 به بعد فراهم شده بود، با کمی وقت امروز مشکل تبدیل تاریخ را حل کردم و در اینجا در اختیار دوستان برنامهنویس قرار میدهم. این کتابخانه بعنوان یه Assembly در محیط داتنت توسعه یافته است و در عملیات تبدیل تاریخ هم از کلاس PersianCalendar خود داتنت استفاده شده است.
توابعی که در این کلاس معرفی شدهاند به قرار زیرند:
(کلیه پارامترهای mDate از نوع DateTime و تاریخ میلادی است.)
کریستال رپورت مجموعه غنی از توابع بیشماری را در خود جای داده است که با اضافه شدن توابع کاربر میتوان هرگونه کمبود را جبران نمود.
اسمبلی فوق از طریق دستور:
Gacutil –if CRUFL_PersianDate.Dll
در Command Prompt داتنت، نصب خواهد شد که جهت اطمینان از نصب میتوانید به مسیر \Windows\Assembly رجوع کنید تا لیست اسمبلیهای نصب شده را ببینید. با نصب این اسمبلی، کریستال ریپورت از طریق رابط u2lcom.dll میتواند به این توابع دسترسی داشته باش
نحوه استفاده از این توابع هم مانند سایر توابع خود کریستال ریپورت است.
برای شروع یک گزارش ساده بسازید و سپس از طریق Formula Fields یک فرمول تعریف کنید و formula Editor را باز کنید. حال در بخش Function Tree مسیر زیر را باز کنید:
کلیه توابع موجود در این کتابخانه با پیشوند PersianDate نامگذاری شدهاند تا با سایر توابع متمایز باشند.
در این فرمول فیلد CreationDate از نوع DateTime است که توسط تابع cdate کریستال، به پارامتر قابل قبول تابع ما تبدیل خواهد شد.
تصویر زیر یک مثال سادهای از شیوه استفاده از توابع موجود را نشان میدهد که سورس آن ضمیمه شده است.
سورس این کتابخانه + همین مقاله در قالب PDF هم عینا تقدیم میشود تا در صورت تمایل برای توسعه و همینطور آشنایی با ساخت این نوع کتابخانهها بعنوان راهنما در دسترس باشد.
سورس و کل مقاله به شکل PDF
www.DotNetSource.com/Download/Crystal_Report_PersianDate_(UFL).pdf
www.DotNetSource.com/Download/CRUFL_PersianDate.rar
www.DotNetSource.com/Download/Crystal_Report_PersianDate_VB_Sample.rar