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)
انجمن تخصصی برنامهنویسی داتنت سورس
منبع 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)