PDA

View Full Version : گرد کردن اعشار در نمایش



Esikhoob
چهارشنبه 04 اسفند 1389, 14:36 عصر
با سلام
در یک table ، ستون numeric با 3 رقم اعشار برای" قیمت تمام شده" در نظر گرفته شده.
هنگام نمایش به کاربر از طریق report یا در GRID، نمی خواهیم کاربر اعشار این ستون را ببیند.
در برنامه ما، قبلا برای این کار از inputmask = "99,999,999,999" استفاده میشده ولی اشکال این بود که این روش اعشار را دور میریزد و موجب میشود که در قسمت پایین گزارش -Summary- که جمع صفحه را با field های با تنظیم SUM شده نمایش دادیم ، با جمع ردیفها اگر کاربر دستی باهم جمع کند ، مقدار کمی متفاوت شود.
برای حل این اشکال لازم است هر فیلد ، به صورت گرد شده (بالای 5 به عدد بعدی و کمتراز 5 عدد قبلی) نمایش بدهد ، در این حالت اختلاف این دو محل به حداقل می رسد.
اولا به نظر شما این راه حل ما برای اینکار درست است یا نه؟

در برنامه ما SET DECIMALS TO 3 اول برنامه اجرا میشده ، ولی من میخواهم این تنظیم را عوض کنم و روی: SET DECIAMALS TO 0 بگزارم تا اون هدفی که در بالا گفتم انجام شود. ( همچنین دستور SET FIXED ON هم اضافه کنم.)
شما از این دو دستور چطور استفاده میکنید ، آیا اصلا استفاده میکنید؟
آیا این تغییر من ممکن است محاسبات برنامه را تغییر بدهد؟

با تشکر

binyaz2003
پنج شنبه 05 اسفند 1389, 12:39 عصر
استفاده از اون دو دستور رو پيشنهاد نميکنم، اونها فقط در نمايش بکار مي آيند و اگر شما مقاديرتان را در يک گريد نمايش دهيد به محض دريافت فوکوس بصورت اعشاري نمايش داده ميشوند.
سئوال براي من اينه که شما که اعشار رو نشون کاربر نداريد پس چرا ميگيريد در ورود؟
شما بهتره از تابه Round() استفاده کنيد هم در نمايش هم در فيلد جمع گزارش

Esikhoob
جمعه 06 اسفند 1389, 15:52 عصر
با سلام و تشکر از پاسخ خوبتان

سئوال براي من اينه که شما که اعشار رو نشون کاربر نداريد پس چرا ميگيريد در ورود؟


در کتاب Visual Foxpro 7 Hackers` Guide در مورد فلسفه دستور SET DECIMALS TO گفته که VFoxPro میخواهد دقت عدد را پشت صحنه نگه دارد ولی فقط در نمایش به کاربر رقمهای کمتر نمایش دهد.
برنامه نویسی که برنامه ما را اول نوشته اند احتمالا بیخودی این 3 رقم اعشار را گذاشته اند ولی طراحان زبان VFoxPro که کار بیخود انجام نمیدهند.(منظورم اختلاف بین آنچه نمایش داده میشود و آنچه در پشت صحنه ذخیره است)
حالا من دو دل هستم که فلسفه طراحان VFP در مورد دستور SET DECIMALS TO را دنبال کنم ویا روش راحت و همه فهم تر برداشتن اعشار از ابتدای تشکیل شدن اعداد را. الان فکر میکنم دومی بهتر است.