نمایش نتایج 1 تا 40 از 56

نام تاپیک: فرمول نویسی در کریستال ریپورت

Hybrid View

پست قبلی پست قبلی   پست بعدی پست بعدی
  1. #1
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    Cool فرمول نویسی در کریستال ریپورت

    با عرض سلام خدمت دوستان:

    نکته: در این قسمت فقط اسکریپت های کریستال ریپورت ( فرمولها) به همراه توضیح قرار گرفته است.

    اخطار : از مطرح کردن سوال جدا خوداری کنید!


    مطالب :

    . اما چرا ما فرمول نویسی یا اسکریپت نویسی می کنیم

    .نحوه تعریف متغیر عددی و رشته ای

    . اعمال ریاضی

    . تبدیل فیلد عددی به فیلد رشته ای متناظر با ان با مثال

    . عملگر های مقایسه

    . تعریف ارایه و دسترسی به عناصر آن

    . برخی از توابع ریاضی مورد استفاده

    . برخی از توابع موجود در کریستال کار روی رشته

    . ادامه برخی از توابع موجود در کریستال کار روی رشته

    . ادامه برخی از توابع موجود در کریستال کار روی رشته و اعداد

    . کد های اسکریپت نویسی سریع و کوتاه در کریستال

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

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

    . اختلاف بین دو تاریخ

    . تبدیل تاریخ میلادی را به شمسی در کریستال ریپورت

    . به جای عدد هر سطر حروف معادل آن

    . گروه بندی بر اساس حرف اول

    . حلقه for و نکات مربوط به آن

    . شکستن حلقه for یا خارج شدن بر اساس شرطی

    . دستور شرطی if و else

    . دستور select همراه با این که عدد روز هفته را گرفته و مشخص می کند چه روزی از هفته است

    . برخی از دستورات sql و معادل آن در کریستال ریپورت

    . ترفند دستور like روی مقادیر عددی

    . جمع مبلغ یک فیلد از رکورد های یک صفحه و چاپ در انتهای صفحه

    . دستور like و دستور startswith تفاوت و شباهت ها

    . عدم نمایش نام ستون در صورت نداشتن مقادیر

    . رنگ کردن یکی در میان رکورد ها

    . syntax ها در کریستال برای دستورات با بیش از یک خط کد

    توابع در کریستال function in crystal

    . نحوه ایجاد تابع

    . نحوه نوشتن توابع یک خطی

    . نحوه نوشتن توابع چند خطی

    . ارگومان یا ورودی تابع

    . نحوه صدازدن تابع و خروجی ان

    . دستیابی به رکورد قبلی و بعدی

    آخرین ویرایش به وسیله hasan_esfahan : پنج شنبه 27 فروردین 1388 در 22:27 عصر

  2. #2
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    Smile اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    اختلاف بین دو تاریخ


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

    dateVar st1 :=Date ({tb1.datebrith} ) ;
    dateVar st2 :=CurrentDate;
    numberVar h1;
    h1:=(st2-st1);
    آخرین ویرایش به وسیله hasan_esfahan : یک شنبه 04 اسفند 1387 در 23:42 عصر

  3. #3
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    Smile اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    به جای عدد هر سطر حروف معادل آن

    https://barnamenevis.org/showthread.php?t=148819
    آخرین ویرایش به وسیله hasan_esfahan : یک شنبه 04 اسفند 1387 در 23:42 عصر

  4. #4
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    Smile اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    گروه بندی بر اساس حرف اول

    مثلا
    سطر های
    اصغر اکبر امید ارسلان
    و سطر های
    محمد محمود میلاد

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

    Global stringVar str1;
    str1:=left({table11.field1},1)+": گروه";


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


    Global stringVar str1;
    whileprintingrecords;
    if left({table11.field1},1)+": گروه"<>str1 then
    str1:=left({table11.field1},1)+": گروه";
    آخرین ویرایش به وسیله hasan_esfahan : یک شنبه 04 اسفند 1387 در 23:42 عصر

  5. #5
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    Lightbulb اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

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




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

  6. #6
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    Smile اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    تعریف ارایه و دسترسی به عناصر آن


    numbervar array array1:=[0,31,60,91,121,152,182,213,244,274,305,335];
    numbervar num1 := array1[3] ;
    آخرین ویرایش به وسیله hasan_esfahan : یک شنبه 04 اسفند 1387 در 23:43 عصر

  7. #7
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    این تابع تاریخ میلادی را به شمسی تبدیل می کنه در کریستال

    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#‎ و من ان را به کریستال تبدیل کردم.
    و کلیه قسمت های آن در پست های قبلی توضیح داده شده است.

  8. #8
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    Cool اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

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


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

  9. #9
    کاربر تازه وارد آواتار svhasvha
    تاریخ عضویت
    آذر 1390
    محل زندگی
    کرمانشاه
    پست
    89

    نقل قول: اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    سلام و به تشکر توپ بابت همشون خیلی خیلی خیلی عالی بودن من اولین باریه که از کسی تو سایت تشکر میکنم ولی این مطلب واقعا لیاقت تشکر رو داشت
    1 مشکل خیلی کوچیک
    تو خروجی تاریخ شمسی رو به صورت اعشار میزنه !!!!
    13,92.00/3,00/3.,00 تو فرمول خط آخر
    به اینصورتم تغییر دادم ولی باز نشد

    stringvar exitmy:=totext(int(shamsiYear))+' / '+totext(int(shamsiMonth))+' / '+totext(int(shamsiDay));
    exitmy;


    با کلیک راستم نشد چون رشتس عدد نیست !!!
    زحمت جوابشو بکشد

  10. #10

    نقل قول: اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    نقل قول نوشته شده توسط svhasvha مشاهده تاپیک
    سلام و به تشکر توپ بابت همشون خیلی خیلی خیلی عالی بودن من اولین باریه که از کسی تو سایت تشکر میکنم ولی این مطلب واقعا لیاقت تشکر رو داشت
    1 مشکل خیلی کوچیک
    تو خروجی تاریخ شمسی رو به صورت اعشار میزنه !!!!
    13,92.00/3,00/3.,00 تو فرمول خط آخر
    به اینصورتم تغییر دادم ولی باز نشد

    stringvar exitmy:=totext(int(shamsiYear))+' / '+totext(int(shamsiMonth))+' / '+totext(int(shamsiDay));
    exitmy;


    با کلیک راستم نشد چون رشتس عدد نیست !!!
    زحمت جوابشو بکشد
    سلام منم این مشکل رو دارم کمک کنید

  11. #11
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    نقل قول: فرمول نویسی در کریستال ریپورت

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

    تابع 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

  12. #12
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    جمع مبلغ یک فیلد از رکورد های یک صفحه و چاپ در انتهای صفحه
    شما برای این کار سه فرمول ایجاد می کنید از پنجره 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 کنید

  13. #13

    نقل قول: اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    نقل قول نوشته شده توسط hasan_esfahan مشاهده تاپیک
    جمع مبلغ یک فیلد از رکورد های یک صفحه و چاپ در انتهای صفحه
    شما برای این کار سه فرمول ایجاد می کنید از پنجره 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 کنید
    یک سوال اگر من بخواهم مجموع را با توجه به یک فیلد دیگر حساب کنم چطوری باید اینکار را بکنم فرض کن من دو فیلد دارم یکی فیلد خدمات (محتوای آن شامل پرینت و کپی و فاکس)و دیگری فیلد تعداد، حال می خواهم در پایین صفحه تعداد هرکدام از اینها را جدا بزند برای این کار چکار کنم در صورتی که با فرمول فوق مجموع همه را حساب می کند. لطفا به من سریعتر در این باره کمک کنید
    آخرین ویرایش به وسیله sepide1 : یک شنبه 14 شهریور 1389 در 13:00 عصر

  14. #14
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    رنگ کردن یکی در میان رکورد ها
    بر روی Detail کلیک راست سپس section export کلیک کنید در سمت راست بر روی تب color کلیک کنید و سپس چک باکس را علامت گذاری کرده و در زیر ان بر روی باتون فرمول کلیک کنید و سپس کد زیر را درج کنید

    whileprintingrecords;
    numbervar i:=RecordNumber;
    booleanvar bt:=(i mod 2)=0;
    if bt then crGreen else crRed
    آخرین ویرایش به وسیله hasan_esfahan : شنبه 01 فروردین 1388 در 20:48 عصر

  15. #15
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    اما چرا ما فرمول نویسی یا اسکریپت نویسی می کنیم
    به نظر بنده بیشتر اسکریپت های نوشته شده برای زیباتر و جالب تر شدن و همچنین اضافه کردن امکانات به کریستال می باشد مثلا رنگی کردن یک در میان رکوردها یا تغیر رنگ فیلد ها و یا ایجاد تاریخ فارسی تبدیل روز میلادی به شمسی یا جمع فیلد ها در انتهای صفحه یا تبدیل حروف کوچک به بزرگی برعکس این یا هزارن چیز دیگر به کار می رود همانطور که در بیشتر قسمت های فرم کریستال با باز شدن هر پنجره شکل یک باتوم خاص را میبینید یعنی این که برای هر قسمت می توان فرمول مربوطه را نوشت از تغیر رنگ گرفته تا بینهایت

  16. #16
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    نحوه ایجاد تابع در کریستال
    ابتدا برای ایجاد تابع باید یک فرمول ایجاد کرده یا اصلا وارد محیط اسکریپت نویسی یا فرمول نویسی شوید .برای ایجاد تابع در قسمت کریستال report coustem function کلیک راست کرده و بر روی new کلیک کرده در پنجره ظاهر شده نامی برای تابع انتخاب کرده و وارد اسکریپت نویسی شوید (دکمه دومی) من مثلا رضا انتخاب کردم تصویر زیر که پس از ایجاد به صورت زیر ظاهر می شود

    Function ()

    عکس های ضمیمه عکس های ضمیمه

  17. #17
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    نحوه نوشتن توابع که دارای یک خط کد می باشند کافی است پس از نام تابع یک خط کد بیشتر نشود


    Function ()
    numbervar a:=1;


  18. #18
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    نحوه نوشتن توابع چند خطی
    همانطور که می دانید در بیشتر زبا نهای برانامه نویسی برای نوشتن چند خط کد که مربوط به یک دستور باشد مثلا در زبان سی { } یا در پاسکال بگین و اند بود در اینجا از پرانتز با سمی کالن اخر استفاده می شود

    Function ()
    (
    numbervar a:=1;
    a:=a+1;
    );

  19. #19
    کاربر دائمی
    تاریخ عضویت
    آبان 1387
    محل زندگی
    خراسان رضوی
    پست
    677

    نقل قول: اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    نقل قول نوشته شده توسط hasan_esfahan مشاهده تاپیک
    رنگ کردن یکی در میان رکورد ها
    من که امتحان کردم اکثر رنگ هارو قبول نمی کنه . اونایی که قبول می کنه خیلی بد رنگ هستن
    مجموعه رنگاش کدوم ها هستند

  20. #20

    نقل قول: اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    نقل قول نوشته شده توسط shocraneh مشاهده تاپیک
    من که امتحان کردم اکثر رنگ هارو قبول نمی کنه . اونایی که قبول می کنه خیلی بد رنگ هستن
    مجموعه رنگاش کدوم ها هستند
    در قسمت Section Expert قسمت detail رو انتخاب کن، در زبانه ی Color، تیک Background color رو بزن.

    بعد رو این دکمه کلیک کن :

    یک کد توی این مایه ها بنویس برای اینکه یک رکورد در میون رنگ رکورد عوض شه.
    if RecordNumber mod 2 = 0 then
    crNoColor
    else
    crSilver


    اگه رنگهایی که به صورت پیش فرض داره رو خوشت نیومد میتونی به جای مثلا crSilver بنویسی
     Color(50,100,200)
    ، عدد 50 مقدار رنگ قرمز و 100 مقدار رنگ سبز و 200 مقدار رنگ آبی هست.
    با این تابع میتونی هر ترکیب رنگی رو بسازی.

    موفق باشی.
    عکس های ضمیمه عکس های ضمیمه

  21. #21
    کاربر تازه وارد
    تاریخ عضویت
    آذر 1386
    محل زندگی
    مشهد
    پست
    47

    Angry حذف اعشار

    سلام دوست عزیز
    کریستال ریپورت برنامه من با دیتا ست پر میشه
    چه جوری متونم یه فیلد که قیمت درش هست رو بدون صفر اعشار نشون بدم؟می خوام فیلدهای اعدادم بدون اعشار باشه.
    از یک کد استفاده کردم ولی خطا میده.لطفا راهنماییم کنین چه کار باید بکنم.

    عکس های ضمیمه عکس های ضمیمه

  22. #22

    نقل قول: حذف اعشار

    نقل قول نوشته شده توسط ali.ghodrati مشاهده تاپیک
    سلام دوست عزیز
    کریستال ریپورت برنامه من با دیتا ست پر میشه
    چه جوری متونم یه فیلد که قیمت درش هست رو بدون صفر اعشار نشون بدم؟می خوام فیلدهای اعدادم بدون اعشار باشه.
    از یک کد استفاده کردم ولی خطا میده.لطفا راهنماییم کنین چه کار باید بکنم.

    سلام دوست من،
    نیازی به کد نویسی نیست، کافیه روی فیلدت کلیک راست کنی، و در قسمت تنظیمات مربوط به فرمت تعیین کنی که تعداد رقم اعشارش صفر نیست.
    الآن کریستال دم دستم نیست برات عکس بذارم، اگه جواب نگرفتی بگو تا برات عکس بذارم.
    موفق باشی

  23. #23
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    نقل قول: فرمول نویسی در کریستال ریپورت

    انواع ارگومان (ورودی) تابع
    یک ارگومان

    Function (numbervar i)
    (
    numbervar a:=1;
    a:=a+1;
    );
    بیش از یک ارگومان

    Function (numbervar i,stringvar j)
    (
    numbervar a:=1;
    a:=a+1;
    );

  24. #24
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    نقل قول: فرمول نویسی در کریستال ریپورت

    خروجی تابع و صدا زدن ان
    خروجی تابع بستگی به اخرین خط اجرا شده دارد

    Function (numbervar i)
    (
    if i> 0 then
    'mosbat'
    else if i=0 then
    'zero'
    else
    'negative'
    );
    که اگر من عدد 2 را به صورت زیر ارسال کنم

    reza(2);
    خروجی به صورت زیر است

    mosbat
    نکته میتوان خروجی را در متغیر هم نوع قرار داد

    stringvar d:=reza(2);

  25. #25
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    اسکریپت نویسی (به قول دوستان فرمول نویسی) در کریستال ریپورت

    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;
    );

  26. #26
    کاربر دائمی آواتار hasan_esfahan
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    اصفهان
    پست
    419

    نقل قول: فرمول نویسی در کریستال ریپورت

    دستیابی به رکورد قبلی

    Previous ({book1.id});

    دستیابی به رکورد بعدی

    Next ({book1.id});

  27. #27
    کاربر دائمی آواتار majidsoft
    تاریخ عضویت
    مهر 1387
    محل زندگی
    اهواز
    سن
    43
    پست
    329

    نقل قول: فرمول نویسی در کریستال ریپورت

    با سلام وخسته نباشید من یک سوال داشتم من یک table در sql دارم که بر اساس یک فیلد جستجو کرده و نتایج را نمایش می دهد حالا می می خواستم بدانم چگونه می شود با یک حلقه از محتویات یک فیلد یک میانگین گرفت به طوریکه اگر عدد صفر بود عدد را در میانگین نیاورد و همینطور در یک فیلد دیگر از محتویات کل فیلد در table میانگین بگیرد امیدورام که منظورم را رسانده باشم یعنی من یکبار می خواهم از محتویات فیلدهای نمایش داده شده در کریستال میانگین بگیرم و یکبار از محتویات کل دیتابیس
    با تشکر

  28. #28

    نقل قول: فرمول نویسی در کریستال ریپورت

    نقل قول نوشته شده توسط majidsoft مشاهده تاپیک
    با سلام وخسته نباشید من یک سوال داشتم من یک table در sql دارم که بر اساس یک فیلد جستجو کرده و نتایج را نمایش می دهد حالا می می خواستم بدانم چگونه می شود با یک حلقه از محتویات یک فیلد یک میانگین گرفت به طوریکه اگر عدد صفر بود عدد را در میانگین نیاورد و همینطور در یک فیلد دیگر از محتویات کل فیلد در table میانگین بگیرد امیدورام که منظورم را رسانده باشم یعنی من یکبار می خواهم از محتویات فیلدهای نمایش داده شده در کریستال میانگین بگیرم و یکبار از محتویات کل دیتابیس
    با تشکر
    https://barnamenevis.org/showpo...24&postcount=4

  29. #29

    نقل قول: فرمول نویسی در کریستال ریپورت

    سلام
    کسی سریال کریستال ریپورت 2008 موقع نصب رو داره ؟؟؟؟؟

  30. #30

    نقل قول: فرمول نویسی در کریستال ریپورت

    یه سرچ تو اینترنت بزنی همه چی هست

  31. #31

    نقل قول: فرمول نویسی در کریستال ریپورت

    سلام به همه
    من یه مشکل دارم یه کمم ضروریه اگه کسی تونست کمک کنه خیلی ممنون میشم
    من میخوام توی VB.NET 2005 از فیلد های مستقل تو گزارشم استفاده کنم ( فیلد هایی که به هیچ بانک اطلاعاتی مرتبط نیستن )
    مثل یه String ساده یا متن یه texbox
    نمی دونم تویی فرم vb چطور باید رشته یا متن رو به فیلد داخل گزارش ربظ بدم و مقدار دهیش کنم
    خیلی امتحان کردم یا جواب نمی داد یا بدردم نمی خورد
    مثلا با استفاده از فیلد Report Title تونستم متن رو انتقال بدم ولی این بدردم نخورد
    میخوام داخل گزارش از فیلد های UnboundString@ یا Text Object استفاده کنم ولی نمی دونم چه فرمول یا کدی باید بنویسم
    اگه کسی تونیت کمک کنه

  32. #32
    کاربر جدید آواتار mrb1748
    تاریخ عضویت
    دی 1387
    محل زندگی
    شیراز
    پست
    24

    Talking نقل قول: فرمول نویسی در کریستال ریپورت

    این هم پاسخ به سوال اگه عدد اعشار نداشته باشد بصورت صحیح نمایش بدهد و هم این سوال که کاربر تعیین کننده تعداد اعشار هست

    if Int ({MFactor.Tedad})= {MFactor.Tedad} then
    CStr (Round ({MFactor.Tedad},0),0 )
    else
    CStr (Round ({MFactor.Tedad},{?DecNum}),{?DecNum} ) e

  33. #33
    کاربر جدید
    تاریخ عضویت
    دی 1387
    محل زندگی
    پولادشهر
    سن
    35
    پست
    27

    نقل قول: فرمول نویسی در کریستال ریپورت

    سلام دوستان من میخواستم داده های مربوط به واریز و پرداخت وجه برای یک مشتری رو در یک نرم افزار مدیریت فروش در یک جدول تک به نام تراکنش ها ذخیره نمایم و در هنگام گزارش گیری ردیف های مربوط به هر مشتری رو با استفاده از یک کد سلکت و بایند کردن دیتاست به کریستال ریپورت بفرستم
    کاری که میخوام بکنم و نمیتونم اینه ردیف های این گزارش عبارت میشن از شماره ردیف،تاریخ،شرح،بدهکار،بست انکار که از بانک استخراج میشن و یک ردیف که خودم اضافه میکنم و میشه مانده میخوام برای هر ردیف مانده ردیف قبل با مبلغ بستانکار و بدهکار اون ردیف جمع و کسر بشه و درج بشه اما نمیتونم در کریستال ریپورت این چطوری میشه؟
    میتونم جمع همه واریزی ها و برداشتی ها رو بگیرم و در آخر مانده فعلی رو بدست بیارم ولی میخوام برای هر ردیف یک مانده باشه...
    در واقع نمیخوام برای هر مشتری در بانک اطلاعاتم جدول جداگانه داشته باشم که در هنگام ثبت هر واریز و برداشت آخرین مانده رو در جدول بگیره و بعد از انجام جمع و تفریق اون رو در بانک ذخیره کنه بلکه همه تراکنش ها در یک جدول ذخیره و مانده در هنگام گزارش گیری محاسبه بشه؟

  34. #34

    نقل قول: فرمول نویسی در کریستال ریپورت

    سلام به همه
    چطوری میشه جمع به حروف هر صفحه ازگزارش رو بر اساس فیلدی بنویسم.مثلا من یه ففاکتور طراحی کردم که شامل 3 صفحه است که می خوام جمع صفحه اول را در اخر همین صفحه بصورت حروف و جمع صفحه دوم رو بهمین ترتیب در همین صفحه به صورت حروف بنویسه و جمع صفحات بعدی رو به همین صورت.
    همچنین رکودی در صفحه دوم ساخته بشه که جمع صفحه اول را در ابتدای صفحه نقل بده و صفحات بعدی را.

  35. #35

    نقل قول: فرمول نویسی در کریستال ریپورت

    همچنین رکودی در صفحه دوم ساخته بشه که جمع صفحه اول را در ابتدای صفحه نقل بده و صفحات بعدی را.
    دوستانی که چنین مشکلی دارن، لطفا این تاپیک رو مشاهده کنن:
    https://barnamenevis.org/showthread.p...F%D8%B1-Detail

  36. #36

    نقل قول: فرمول نویسی در کریستال ریپورت


    stringvar exitmy:=CSTR(shamsiYear,0,'')+' / '+CSTR(shamsiMonth,0)+' / '+CSTR(shamsiDay,0);

    به جاش این کد رو بزار خوب میشه

  37. #37

    نقل قول: فرمول نویسی در کریستال ریپورت

    سلام آقا یکی به دادم برسه من تازه شروع کردم به کریستال ریپورت و میخوام بدونم این همه کدی که تو همه سایت و همه انجمن ها میگن کجا مینویسیم
    من نمیدونم کد ها رو کجا بنویسم؟؟؟؟؟؟؟؟؟؟؟
    دو روزه خواب و خوراک ندارم مسئله هیسیتی کلافه شدم دیگه کد کد کد بابا اگه جاشو پیدا کنم مینویسم دیگه!!!!!!!

برچسب های این تاپیک

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •