PDA

View Full Version : راهنمای برای نوشتن فرمول در کریستال ریپورت



saeedeh119
چهارشنبه 02 اسفند 1391, 13:51 عصر
من میخام اختلاف ساعت رو بین دو تاریخ وساعت بدست بیارم وتوی گزارشم نشون بدم ساعت وتاریخ شوروع وپایان 4 تا از فیلدهای جدول هستن.نحوه استفاده از datediff فرمول نویسی کریستال ریپورت رو بلد نیستم

saeedeh119
چهارشنبه 02 اسفند 1391, 14:31 عصر
جمع مبلغ یک فیلد از رکورد های یک صفحه و چاپ در انتهای صفحه
شما برای این کار سه فرمول ایجاد می کنید از پنجره filed explorer

فرمول اولی را در در قسمت page header قرار داده و کد زیر را در ان درج کنید:

Shared numberVar sum1;
WhilePrintingRecords;
sum1:=0
فرمول دومی را در details قرار داده و کد زیر را در آن درج نماید:
Shared numberVar sum1;
WhilePrintingRecords;
sum1:={Table11.id}+sum1

فرمول سومی را در pagefooter قرار داده و کد زیر را در ان درج کنید:

Shared numberVar sum1;
WhilePrintingRecords;
sum1;


برای این که فرمول اولی و دومی هنگام اجرا نمایش داده نشوند در پنجره propertis خاصیت Suppress هر کدام را برابر با true کنید
من نحوه استفاده ازتابع datediff که ازتوابع خود کریستال هست رو میخام

ma.rad
چهارشنبه 02 اسفند 1391, 14:38 عصر
این تابع تاریخ میلادی را به شمسی تبدیل می کنه در کریستال:


numbervar iMiladiMonth:=month(CurrentDate); numbervar iMiladiDay:=day(CurrentDate); numbervar iMiladiYear:=year(CurrentDate); numbervar shamsiDay; numbervar shamsiMonth; numbervar shamsiYear; numbervar dayCount; numbervar farvardinDayDiff; numbervar deyDayDiff; numberVar array sumDayMiladiMonth :=[0,31,59,90,120,151,181,212,243,273,304,334]; numberVar array sumDayMiladiMonthLeap := [0,31,60,91,121,152,182,213,244,274,305,335]; numberVar farvardinDayDiff:=79; numbervar miladiYear1:=int(imiladiYear mod 100); numbervar miladiYear2:=int(imiladiYear mod 4); numbervar miladiYear3:=int(imiladiYear mod 100); numbervar miladiYear4:=int(imiladiYear mod 400); if (((miladiYear1 <> 0 )and (miladiYear2 =0))or((miladiYear3=0)and (miladiYear4=0))) then dayCount := sumDayMiladiMonthLeap[iMiladiMonth] + iMiladiDay else dayCount := sumDayMiladiMonth[iMiladiMonth] + iMiladiDay; miladiYear1:=int((imiladiYear-1) mod 100); miladiYear2:=int((imiladiYear-1) mod 4); miladiYear3:=int((imiladiYear-1) mod 100); miladiYear4:=int((imiladiYear-1) mod 400); if (((miladiYear1 <> 0 )and (miladiYear2 =0))or((miladiYear3=0)and (miladiYear4=0))) then deyDayDiff := 11 else deyDayDiff := 10; if (dayCount > farvardinDayDiff) then ( dayCount := dayCount - farvardinDayDiff; if (dayCount <= 186) then ( select int(dayCount mod 31) case 0:( shamsiMonth :=int( dayCount / 31); shamsiDay := 31; ) default:( shamsiMonth := int(dayCount / 31) + 1; shamsiDay :=int(dayCount mod 31); ); shamsiYear := iMiladiYear - 621; ) else ( dayCount := dayCount - 186; select dayCount mod 30 case 0:( shamsiMonth := int(dayCount / 30) + 6; shamsiDay := 30; ) default:( shamsiMonth := int(dayCount / 30) + 7; shamsiDay := int(dayCount mod 30); ); shamsiYear := iMiladiYear - 621; ) ) else ( dayCount := dayCount + deyDayDiff; select int(dayCount mod 30) case 0 :( shamsiMonth := int(dayCount / 30) + 9; shamsiDay := 30; ) default:( shamsiMonth := int(dayCount / 30) + 10; shamsiDay := int(dayCount mod 30); ); shamsiYear := iMiladiYear - 622; ); stringvar exitmy:=totext(shamsiYear)+' / '+totext(shamsiMonth)+' / '+totext(shamsiDay); exitmy;

بدست اوردن روز ماه و سال تاریخ فعلی



numbervar iMiladiDay:= Day (CurrentDate); numbervar iMiladiMonth:=Month (CurrentDate); numbervar iMiladiYear:=Year (CurrentDate);

بدست اوردن ساعت دقیقه و ثانیه فعلی سیستم:


numbervar iHour:=Hour (CurrentTime); numbervar iMinute :=Minute (CurrentTime); numbervar iSecond :=Second (CurrentTime);

اختلاف بین دو تاریخ:
ابتدا یک فرمول فیلد ایجاد کنید و ان را در قسمت دیتیل قرار بدهید سپس کد زیر را داخل ان درج کنید:


dateVar st1 :=Date ({tb1.datebrith} ) ; dateVar st2 :=CurrentDate; numberVar h1; h1:=(st2-st1);

saeedeh119
چهارشنبه 02 اسفند 1391, 14:46 عصر
واضح تر بگم میخام توی گزارشم یه ستون داسته باشم که نشون بده ازتاریخ شروع ساعت شروع تا تاریخ پایان ساعت پایان چند ساعت میشه.که این تاریخ وساعت ها جهارتا از فیلدهای جدول هستند.

ma.rad
چهارشنبه 02 اسفند 1391, 16:45 عصر
http://barnamenevis.org/showthread.php?148950-%D9%81%D8%B1%D9%85%D9%88%D9%84-%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%AF%D8%B1-%DA%A9%D8%B1%DB%8C%D8%B3%D8%AA%D8%A7%D9%84-%D8%B1%DB%8C%D9%BE%D9%88%D8%B1%D8%AA