PDA

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



EHprogramer
دوشنبه 06 اسفند 1386, 10:40 صبح
با سلام
من برای نمایش یک عدد به صورت اعشاری ، در تب number در format editor آن فیلد، مقدار decimal را تعیین کردم ولی از آنجا که تعداد اعشار فیلدم ثابت نیست ، در رکوردهایی که اعشارشان کمتر باشد، به جای مقادیر باقیمانده صفر می گذارد و چون این مقادیر بسیار متفاوت هستند من مجبورم بیشترین تعداد اعشار را برای آن در نظر بگیرم . آیا روشی وجود دارد که گزارش صفرهای اضافی جلوی اعشار را حذف کند؟

محمد رضاپور
دوشنبه 06 اسفند 1386, 17:19 عصر
با سلام

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

در همون برگه Number در قسمت Format Editor، گزینه Customize رو انتخاب کنید و در قسمت Decimals برروی دکمه X-2 کلیک کرده و این فرمول رو قرار بدید:

If Round({fieldName}, 0) = Round({fieldName}, 1) Then
0
Else If Round({fieldName}, 1) = Round({fieldName}, 2) Then
1
Else If Round({fieldName}, 2) = Round({fieldName}, 3) Then
2
Else If Round({fieldName}, 3) = Round({fieldName}, 4) Then
3

تعداد این شرطها بسته به تعداد ارقام اعشاری که شما نیاز دارید، هستند و هر چه تعداد اعشار شما بیشتر باشه، باید کنترلهای بیشتری رو قرار بدید.

امیدوارم که این روش برای شما قابل استفاده باشه.
موفق باشید.

غلامرضا شریفی
سه شنبه 05 آبان 1388, 15:49 عصر
با سلام

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

در همون برگه Number در قسمت Format Editor، گزینه Customize رو انتخاب کنید و در قسمت Decimals برروی دکمه X-2 کلیک کرده و این فرمول رو قرار بدید:

If Round({fieldName}, 0) = Round({fieldName}, 1) Then
0
Else If Round({fieldName}, 1) = Round({fieldName}, 2) Then
1
Else If Round({fieldName}, 2) = Round({fieldName}, 3) Then
2
Else If Round({fieldName}, 3) = Round({fieldName}, 4) Then
3

تعداد این شرطها بسته به تعداد ارقام اعشاری که شما نیاز دارید، هستند و هر چه تعداد اعشار شما بیشتر باشه، باید کنترلهای بیشتری رو قرار بدید.

امیدوارم که این روش برای شما قابل استفاده باشه.
موفق باشید.
http://barnamenevis.org/forum/images/statusicon/user_offline.gif http://barnamenevis.org/forum/images/buttons/report.gif (http://barnamenevis.org/forum/report.php?p=473623)
در فرمول فوق اگر عدد 4.99 باشد به 5 تبديل ميشود جسارتا بايد يك تغيير كوچك داده شود

If Round({fieldName}, 0) = fix({fieldName}, 1) Then
0
Else If Round({fieldName}, 1) = fix({fieldName}, 2) Then
1
Else If Round({fieldName}, 2) = fix({fieldName}, 3) Then
2
Else If Round({fieldName}, 3) = fix({fieldName}, 4) Then
3

mina.net
پنج شنبه 07 آبان 1388, 15:09 عصر
سلام دوستان
من هم همین مشکل رو دارم و از اونجای که برنامه من در مورد طلا فروشی هست روند کردن وزن معنی ندارد. چاره کار چی هست.
تو طلا فروشی سکه به صورت عدد فروخته می شه و وقتی فاکتور نمایش داده می شه با سه تا صفر اضافه هست چون من از همون ستون برای نمایش وزن طلا(غیر از سکه) استفاده می کنم

mina.net
چهارشنبه 13 آبان 1388, 15:14 عصر
کسی جوابی نداره

matrixrayaneh
چهارشنبه 29 دی 1389, 13:56 عصر
من مشکلی که دارم اینه که تعداد رقم اعشار رو کاربر تعیین میکنه
چطوری میتونم عددی با رقم اعشار متغیر در جدولی که در کریستال ریپورت نمایش داده میشه تولید کنم؟
البته یه راه حلی به ذهنم رسیده و اون اینکه تعداد رقم اعشار رو به صورت پارامتر به کریستال ارسال کنم و بر اساس اون تعداد رقم اعشار رو تعیین کنم اما نمیدونم چطوری باید براش تو کریستال فرمول بنویسم

hyperboy743
چهارشنبه 03 خرداد 1396, 08:16 صبح
برای اینکه اعداد اعشار در گزارشهایی که با کریستال ریپورت گرفته می شوند به اعداد صحیح تبدیل شوند و رقم های اعشار ان ها نمایش داده نشوند می توان از فرمول زیر استفاده کرد

ToText( ToNumber({variable1}), "#" )