-
فرمول نویسی در کریستال ریپورت
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
اختلاف بین دو تاریخ
ابتدا یک فرمول فیلد ایجاد کنید و ان را در قسمت دیتیل قرار بدهید سپس کد زیر را داخل ان درج کنید
dateVar st1 :=Date ({tb1.datebrith} ) ;
dateVar st2 :=CurrentDate;
numberVar h1;
h1:=(st2-st1);
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
گروه بندی بر اساس حرف اول
مثلا
سطر های
اصغر اکبر امید ارسلان
و سطر های
محمد محمود میلاد
که شما دو فرمول فیلد ایجاد کرده و اولی را در ریپورت هدر قرار می دهید و کد زیر را داخل آن بنویسید
Global stringVar str1;
str1:=left({table11.field1},1)+": گروه";
و سپس دومی را در دیتیل قرار دهیدو کد زیر را در ان درج کنید
Global stringVar str1;
whileprintingrecords;
if left({table11.field1},1)+": گروه"<>str1 then
str1:=left({table11.field1},1)+": گروه";
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
بدست اوردن روز ماه و سال تاریخ فعلی
numbervar iMiladiDay:= Day (CurrentDate);
numbervar iMiladiMonth:=Month (CurrentDate);
numbervar iMiladiYear:=Year (CurrentDate);
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
تعریف ارایه و دسترسی به عناصر آن
numbervar array array1:=[0,31,60,91,121,152,182,213,244,274,305,335];
numbervar num1 := array1[3] ;
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
تبدیل فیلد عددی به فیلد رشته ای متناظر با ان با مثال
stringvar str1:=totext({tb1.filde1})+" :عدد ";
تبدیل فیلد رشته ای(ازنوع عدد) به فیلد عددی مثلا برای جمع مقادیر
numbervar num1:=ToNumber ({tb1.filed1})+ToNumber ({tb1.filed1});
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
اگه یه ستون خاص دیتا نداشت اسمش رو هم نشون نده؟
ابتدا در پنجره field explorer در قسمت frmoul filds راست کلیک کنید سپس new و نامی برای فرمول خود انتخاب کنید سپس use editor کلیک کنید و کد زیر را درج کنید
stringvar ch1="";
if {tb1.field1} like "*" then
ch1:="نام مورد نظر";
که tb1 نام جدول است و فیلد 1 نام فیلد مورد نظر و در اخر فرمول را به جای فیلد ستون قرار بده
-
نقل قول: فرمول نویسی در کریستال ریپورت
نحوه تعریف برخی از متغیر ها
عددی
Numbervar one;
one:=12;
Numbervar one:=12;
رشته ای
stringVar one ;
one:="salam";
stringVar one :="salam";
منطقی
booleanVar bool :=true ;
booleanVar bool;
bool :=true ;
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
اعمال ریاضی
متغیر های مورد استفاده
Numbervar x:=16;
Numbervar y:=7;
جمع
Numbervar my_sum:=x+y;
//my_sum=23
تقسیم اعشاری
Numbervar my_div:=x/y;
//my_div=2.29
توان
Numbervar my_exp:=x^y;
//my_exp=268435456
تقسیم صحیح
Numbervar my_divint:=x\y;
//my_divint=2
باقیمانده تقسیم x بر y
Numbervar my_mod:= x mod y;
//my_mod= 2
ضرب
Numbervar my_mul:=x* y;
//my_mul=112
مکمل
Numbervar my_negate:=-x;
//my_mul=-16
تفریق
Numbervar my_sub:=x-y;
//my_sub=9
درصد
Numbervar my_persent:=y%x;
//my_persent=43.75
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
مقایسه
مقادیر
Numbervar x:=16;
Numbervar y:=7;
مساوی
Booleanvar bool:=x=y;
//false
بزگتر مساوی
Booleanvar bool:=x>=y;
//true
بزرگتر
Booleanvar bool:=x>y;
//true
کوچکتر مساوی
Booleanvar bool:=x<=y;
//false
کوچکتر
Booleanvar bool:=x<y;
//false
مخالف
Booleanvar bool:=x<>y;
//true
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
دستور شرطی if و else
یک خطی
if x>=y then
x:=false
else
y:=true;
و چند سطری
if x<>y then (
x:=false;
y:=true
)
else
(
x:=true;
y:=false;
)
نکته :
در صورتی که بعد از if شما else داشتید در سطر قبل از else نیازی به سمی کالن(;) نیست
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
دستور select همراه با:
این که عدد روز هفته را گرفته و مشخص می کند چه روزی از هفته است
numbervar x:=DayOfWeek (CurrentDate);
select x
case 1:
"یک شنبه"
case 2:
"دو شنبه"
case 3:
"سه شنبه"
case 4:
"چهار شنبه"
case 5:
"پنج شنبه"
case 6:
"جمعه"
case 7:
"شنبه"
default:
"اشتباه ورودی";
-
نقل قول: فرمول نویسی در کریستال ریپورت
برخی از دستورات sql و معادل آن در کریستال ریپورت
select * from tb1 where filed1<10
{tb1.filed1}<10
select * from tb1 where filed1 like '% کلید جستجو%'
{tb1.filed1} like '* کلید جستجو*'
select * from tb1 where filed1>=10 and filed1<=20
{tb1.filed1}>=10 and {tb1.filed1}=20
select * from tb1 where filed1>=10 or filed1<=20
{tb1.filed1}>=10 or {tb1.filed1}=20
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
نمایش افرادی که مثلا دو رقم اخر کد انها 95 است و کد آنها بین 1000 تا 2000 است فیلد هم از نوع عددی است این روش برای این است که دستور like روی مقادیر عددی انجام نمی شود
totext({tb1.code}) like '*95*' and {tb1.code}>1000 and {tb1.code}<2000
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
کد های اسکریپت نویسی سریع و کوتاه در کریستال
IIF (شرط,true ,false );
IIf(x>y,'سلام','خداحافظ');
Choose (عدد,'اگر یک باشد این قسمت ','اگر دو باشد این قسمت','اگر سه باشد این قسمت',... )
Choose (DayOfWeek (CurrentDate),'یک شنبه','دو شنبه','سه شنبه','چهارشنبه','پنج شنبه','جمعه','شنبه');
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
برخی از توابع موجود در کریستال
حذف فضا های خالی ابتدای فیلد
TrimLeft ({tb1.firstname});
حذف فضا های خالی انتهای فیلد
TrimRight ({tb1.firstname});
حذف فضا های خالی ابتدای و انتهای فیلد
Trim ({tb1.firstname});
انتخاب قسمتی از اخر فیلد مثلا ali را li
Right ({tb1.firstname},2 );
انتخاب قسمتی از اول فیلد مثلا ali را al
Left ({tb1.firstname},2 );
انتخاب قسمتی از فیلد که سه پارامتر دارد اولی فیلد دومی مکان شروع از سمت چپ و سومی تعداد برگشتی
Mid ({tb1.firstname},2 ,4 );
بدست اوردن طول یک فیلد که خروجی آن مقدارعددی است
Length ({tb1.firstname});
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
ادامه:
فقط اولین کاراکتر فیلد حروف بزرگ و مابقی با حروف کوچک
ProperCase ({tb1.firstname});
کلیه کاراکتر های فیلد حروف بزرگ
UpperCase ({tb1.firstname});
کلیه کاراکتر های فیلد حروف کوچک
LowerCase ({tb1.firstname});
تبدیل فیلد رشته ای که عدد درون ان ذخیره شده به فیلد عددی
ToNumber ({tb1.code});
تبدیل فیلد عددی به رشته معادل ان
ToText ({tb1.num});
مقایسه دو فیلد
StrCmp ({tb1.nummeli},{tb1.numshenasname} );
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
ادامه:
معدل گیری از یک فیلد
Average ({tb1.num});
پیدا کردن فبلدی که بیشتر تکرار شده
Mode ({tb1.code});
تعداد فیلد موجود در بانک
Count ({tb1.firstname});
جمع فیلد مورد نظر
Sum ({tb1.code});
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
دستور like و دستور startswith تفاوت و شباهت ها
startswith در این دستور افرادی را نمایش می دهد که اول نام انها با a شروع شود
if {tb1.firstname} startswith 'a' then
{tb1.firstname};
در این دستور افرادی را نمایش می دهد که اول نام انها با a پایان پذیرد
if {tb1.firstname} like '*a' then
{tb1.firstname};
در این دستور افرادی را نمایش می دهد که اول نام انها با a شروع شود که اینجا like همانند startswith عمل می کند
if {tb1.firstname} like 'a*' then
{tb1.firstname};
در این دستور افرادی را نمایش می دهد که در نام انها حرف a وجود داشته باشد اول اخر یا حتی وسط
if {tb1.firstname} like '*a*' then
{tb1.firstname};
اما like دارای دو پارامتر * و ؟ که ستاره به معنی این است که خواه به جای ان کاراکتری نباشد خواه 1 یا .... ولی ؟ به معنی ان است که به جای آن حتما یک کاراکتر باشد مثلا
if {tb1.firstname} like 'a??' then
{tb1.firstname};
افرادی را نمایش می دهد که نام انها با a شروع می شود و نام انها دارای 3 کاراکتر است مثل ali , asd , amd, ask,......
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
نحوه استفاده از حلقه for
i این متغیر فقط نیاز به تعریف کردن دارد.
a مقدار اولیه حلقه را مشخص می کند.
b مقدار نهایی حلقه را مشخص می کند .
step عددی یا متغیر عددی که جلوی ان قرار می گیرد گام افزایشی حلقه را مشخص می کند.
کد زیر نحوه استفاده از حلقه یک خطی را مشخص می کند .
numbervar i;
numbervar a:=5;
numbervar b:=10;
numbervar q:=0;
for i:=a to b step 1 do
q:=q+{tb1.code};
چند نکته
1- به جای i فقط متغیر عددی می تواند بنشیند و نمی توان محاسبات انجام داد.
2- به جای a می توان محاسبات نیز انجام داد.
3- به جای b می توان محاسبات نیز انجام داد.
4-گام حلقه می تواند محاسبات مثلا a+2 باشد.
5- برای حلقه چند خطی باید از پرانتز استفاده کرد.
نحوه استفاده از حلقه چند خطی
numbervar i;
numbervar a:=5;
numbervar b:=10;
numbervar q:=0;
for i:=a to b step 1 do(
q:=q+{tb1.code};
q:=q \10;
);
نکته : در اخر پرانتز نیاز به سمی کالن است .
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
exit for: شکستن حلقه for یا خارج شدن بر اساس مثلا شرطی
for i:=a to b step 1 do(
q:=q+{tb1.code};
if q>400636 then
exit for;
);
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
این تابع تاریخ میلادی را به شمسی تبدیل می کنه در کریستال
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;
منبع: این تابع همان تابعی بود که در C# و من ان را به کریستال تبدیل کردم.
و کلیه قسمت های آن در پست های قبلی توضیح داده شده است.
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
بدست اوردن ساعت دقیقه و ثانیه فعلی سیستم
numbervar iHour:=Hour (CurrentTime);
numbervar iMinute :=Minute (CurrentTime);
numbervar iSecond :=Second (CurrentTime);
-
نقل قول: فرمول نویسی در کریستال ریپورت
برخی از توابع ریاضی مورد استفاده
تابع abs(x) این تابع قدر مطلق عدد را بر می گرداند
numbervar x:=-3.15;
numbervar y:=3.15;
abs(x);
// 3.15
abs(y);
//3.15
تابع int(x) این تابع صحیح عدد را بر می گرداند اما اما در منفی رو به پایین
numbervar x:=-3.15;
numbervar y:=3.15;
int(x);
//-4
int(y);
//3
بازگشت عدد pi
crpi;
//3.14
عدد تصادفی rnd
Rnd;
گرد کردن عدد
numbervar x:=3.15;
numbervar y:=3.55;
Round (x);
//3
Round (y);
//4
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
جمع مبلغ یک فیلد از رکورد های یک صفحه و چاپ در انتهای صفحه
شما برای این کار سه فرمول ایجاد می کنید از پنجره 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 کنید
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
رنگ کردن یکی در میان رکورد ها
بر روی Detail کلیک راست سپس section export کلیک کنید در سمت راست بر روی تب color کلیک کنید و سپس چک باکس را علامت گذاری کرده و در زیر ان بر روی باتون فرمول کلیک کنید و سپس کد زیر را درج کنید
whileprintingrecords;
numbervar i:=RecordNumber;
booleanvar bt:=(i mod 2)=0;
if bt then crGreen else crRed
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
اما چرا ما فرمول نویسی یا اسکریپت نویسی می کنیم
به نظر بنده بیشتر اسکریپت های نوشته شده برای زیباتر و جالب تر شدن و همچنین اضافه کردن امکانات به کریستال می باشد مثلا رنگی کردن یک در میان رکوردها یا تغیر رنگ فیلد ها و یا ایجاد تاریخ فارسی تبدیل روز میلادی به شمسی یا جمع فیلد ها در انتهای صفحه یا تبدیل حروف کوچک به بزرگی برعکس این یا هزارن چیز دیگر به کار می رود همانطور که در بیشتر قسمت های فرم کریستال با باز شدن هر پنجره شکل یک باتوم خاص را میبینید یعنی این که برای هر قسمت می توان فرمول مربوطه را نوشت از تغیر رنگ گرفته تا بینهایت
-
1 ضمیمه
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
نحوه ایجاد تابع در کریستال
ابتدا برای ایجاد تابع باید یک فرمول ایجاد کرده یا اصلا وارد محیط اسکریپت نویسی یا فرمول نویسی شوید .برای ایجاد تابع در قسمت کریستال report coustem function کلیک راست کرده و بر روی new کلیک کرده در پنجره ظاهر شده نامی برای تابع انتخاب کرده و وارد اسکریپت نویسی شوید (دکمه دومی) من مثلا رضا انتخاب کردم تصویر زیر که پس از ایجاد به صورت زیر ظاهر می شود
Function ()
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
نحوه نوشتن توابع که دارای یک خط کد می باشند کافی است پس از نام تابع یک خط کد بیشتر نشود
Function ()
numbervar a:=1;
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
نحوه نوشتن توابع چند خطی
همانطور که می دانید در بیشتر زبا نهای برانامه نویسی برای نوشتن چند خط کد که مربوط به یک دستور باشد مثلا در زبان سی { } یا در پاسکال بگین و اند بود در اینجا از پرانتز با سمی کالن اخر استفاده می شود
Function ()
(
numbervar a:=1;
a:=a+1;
);
-
نقل قول: فرمول نویسی در کریستال ریپورت
انواع ارگومان (ورودی) تابع
یک ارگومان
Function (numbervar i)
(
numbervar a:=1;
a:=a+1;
);
بیش از یک ارگومان
Function (numbervar i,stringvar j)
(
numbervar a:=1;
a:=a+1;
);
-
نقل قول: فرمول نویسی در کریستال ریپورت
خروجی تابع و صدا زدن ان
خروجی تابع بستگی به اخرین خط اجرا شده دارد
Function (numbervar i)
(
if i> 0 then
'mosbat'
else if i=0 then
'zero'
else
'negative'
);
که اگر من عدد 2 را به صورت زیر ارسال کنم
reza(2);
خروجی به صورت زیر است
mosbat
نکته میتوان خروجی را در متغیر هم نوع قرار داد
stringvar d:=reza(2);
-
اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
syntax ها در کریستال برای دستورات با بیش از یک خط کد
نکته 1: همانطور که می دانید در کریستال برای نوشتن چند خط کد که مربوط به یک تابع یا دستور مثلا for, if یا غیره است باید انها راداخل پرانتز نوشت همانطور که در c یا C# از { } استفاده می کنیم اما در این جند خط اگر در اخرین خط کد نیازی به سمی کالن ; ندارد اگر هم با شد مشکلی نیست مثلا هر دو زیر صحیح است.
numbervar i:=2;
numbervar j:=2;
if i>1 then
(
i:=i+1;
i:=i+1 //<==========
);
///////////
numbervar i:=2;
numbervar j:=2;
if i>1 then
(
i:=i+1;
j:=j+1; //<=========
);
نکته دوم در اخر پرانتز برای else و موارد شبیه به ان نیازی به سمی کالن نیست
مثلا دستور زیر صحیح است.
numbervar i:=2;
numbervar j:=4;
if i>1 then
(
i:=i+1;
j:=j+1;
); //<========
for i:=2 to j step 1 do
(
i:=i+1;
j:=j+1;
);
اما دستور زیر چون قبل از else سمی کالن هست خطا دارد.
numbervar i:=2;
numbervar j:=4;
if i>1 then
(
i:=i+1;
j:=j+1;
); //<========
else
(
i:=i+1;
j:=j+1;
);
-
نقل قول: فرمول نویسی در کریستال ریپورت
دستیابی به رکورد قبلی
Previous ({book1.id});
دستیابی به رکورد بعدی
Next ({book1.id});
-
نقل قول: فرمول نویسی در کریستال ریپورت
با سلام وخسته نباشید من یک سوال داشتم من یک table در sql دارم که بر اساس یک فیلد جستجو کرده و نتایج را نمایش می دهد حالا می می خواستم بدانم چگونه می شود با یک حلقه از محتویات یک فیلد یک میانگین گرفت به طوریکه اگر عدد صفر بود عدد را در میانگین نیاورد و همینطور در یک فیلد دیگر از محتویات کل فیلد در table میانگین بگیرد امیدورام که منظورم را رسانده باشم یعنی من یکبار می خواهم از محتویات فیلدهای نمایش داده شده در کریستال میانگین بگیرم و یکبار از محتویات کل دیتابیس
با تشکر
-
نقل قول: فرمول نویسی در کریستال ریپورت
نقل قول:
نوشته شده توسط
majidsoft
با سلام وخسته نباشید من یک سوال داشتم من یک table در sql دارم که بر اساس یک فیلد جستجو کرده و نتایج را نمایش می دهد حالا می می خواستم بدانم چگونه می شود با یک حلقه از محتویات یک فیلد یک میانگین گرفت به طوریکه اگر عدد صفر بود عدد را در میانگین نیاورد و همینطور در یک فیلد دیگر از محتویات کل فیلد در table میانگین بگیرد امیدورام که منظورم را رسانده باشم یعنی من یکبار می خواهم از محتویات فیلدهای نمایش داده شده در کریستال میانگین بگیرم و یکبار از محتویات کل دیتابیس
با تشکر
https://barnamenevis.org/showpo...24&postcount=4
-
نقل قول: اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
نقل قول:
نوشته شده توسط
hasan_esfahan
رنگ کردن یکی در میان رکورد ها
من که امتحان کردم اکثر رنگ هارو قبول نمی کنه . اونایی که قبول می کنه خیلی بد رنگ هستن
مجموعه رنگاش کدوم ها هستند
-
2 ضمیمه
نقل قول: اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت
نقل قول:
نوشته شده توسط
shocraneh
من که امتحان کردم اکثر رنگ هارو قبول نمی کنه . اونایی که قبول می کنه خیلی بد رنگ هستن
مجموعه رنگاش کدوم ها هستند
در قسمت Section Expert قسمت detail رو انتخاب کن، در زبانه ی Color، تیک Background color رو بزن.
https://barnamenevis.org/attach...1&d=1254779875
بعد رو این دکمه کلیک کن : https://barnamenevis.org/attach...1&d=1254779589
یک کد توی این مایه ها بنویس برای اینکه یک رکورد در میون رنگ رکورد عوض شه.
if RecordNumber mod 2 = 0 then
crNoColor
else
crSilver
اگه رنگهایی که به صورت پیش فرض داره رو خوشت نیومد میتونی به جای مثلا crSilver بنویسی Color(50,100,200)
، عدد 50 مقدار رنگ قرمز و 100 مقدار رنگ سبز و 200 مقدار رنگ آبی هست.
با این تابع میتونی هر ترکیب رنگی رو بسازی.
موفق باشی.
-
1 ضمیمه
حذف اعشار
سلام دوست عزیز
کریستال ریپورت برنامه من با دیتا ست پر میشه
چه جوری متونم یه فیلد که قیمت درش هست رو بدون صفر اعشار نشون بدم؟می خوام فیلدهای اعدادم بدون اعشار باشه.
از یک کد استفاده کردم ولی خطا میده.لطفا راهنماییم کنین چه کار باید بکنم.
http://www.mypicx.com/02092010/1/