PDA

View Full Version : سوال: قرار دادن یه مقدار صفر به جای فیلدهای خالی در کریستال ریپورت (کمک فوری)



mohammad_2039
سه شنبه 20 مهر 1389, 11:37 صبح
با سلام به دوستان عزیز
من یه گزارش با کریستال دارم که از چند ستون تشکیل شده و بعد از اجرا مثلا 10 تا رکورد نشون میده ، حالا در لابلای این رکورد ها بعضی ها مقدار ندارن و من میخوام وقتی گزارش تشکیل شد اگه در یک فیلد ردیفی مقدارش خالی بود (حالا به هر دلیلی) به جای اون صفر قرار بده و جاش خالی نباشه. چطوری باید اینکار رو انجام بدم.

tazarvmmr
سه شنبه 20 مهر 1389, 23:35 عصر
با سلام به دوستان عزیز
من یه گزارش با کریستال دارم که از چند ستون تشکیل شده و بعد از اجرا مثلا 10 تا رکورد نشون میده ، حالا در لابلای این رکورد ها بعضی ها مقدار ندارن و من میخوام وقتی گزارش تشکیل شد اگه در یک فیلد ردیفی مقدارش خالی بود (حالا به هر دلیلی) به جای اون صفر قرار بده و جاش خالی نباشه. چطوری باید اینکار رو انجام بدم.


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

اگر مفهوم نبود خبر بده

mohammad_2039
پنج شنبه 22 مهر 1389, 10:49 صبح
با سلام
پاسخ شما رو متوجه شدم ، اما فرمول رو نمیتونم بنویسم اگه امکان داره کمکم کنید. با تشکر

tazarvmmr
پنج شنبه 22 مهر 1389, 21:17 عصر
با سلام
پاسخ شما رو متوجه شدم ، اما فرمول رو نمیتونم بنویسم اگه امکان داره کمکم کنید. با تشکر
عزیز سمت راست صفحه شما میتونی از داخل Field Explorer روی Formula Field رایت کلیک کنی و گزینه New رو انتخاب کنی یک اسم براش انتخای میکنی و وارد محیط فرمول نویسی میشی
فرمول میتونه شامل فیلد، فانکشن و یا اپراتور ها باشه که لیست همشون در بالای صفحه وجود داره
حالا فرض کنیم شما یک فیلد داری به اسم QTY داخل جدول Products که میخوای اگر خالی بود بجاش 0 نوشته بشه و اگر خالی نبود چیزی دیگه
برای اینکار باید فرمول اینطوری نوشته بشه:


stringvar output;

if isnull({Products.QTY}) then output := "0" else output := " none Zero ";
output;


حالا اگر میخوای وقتی خالی نبود به جای عبارت none zero که من گذاشتم مقدارش نوشته بشه باید بجاش بنویسی {Products.QTY} اگر مقدارت از نوع عددی باشه اینجا چون متغیری که ما گرفتیم از نوع رشته هست ازت ایراد میگیره اونوقت باید اینو بنویسی که مقدار فیلدتو به رشته تغییر بده: cstr({Pproducts.QTY})

اگر بازم مفهوم نبود خبرم کن

mohammad_2039
جمعه 23 مهر 1389, 10:48 صبح
با عرض سلام
من فرمول رو اونطور که فرمودید نوشتم هنگام save این خطا رو میده:

one of the comparison operators <,<= or> , >= is expected here

در ضمن من یه جدول به نام RportTable دارم که 3 تا فیلد با نام m1,m2,m3 داره که از نوع اینتیجر هستش و میخوام که این حالت برای این سه تا فیلد اتفاق بیفته.
باز هم از راهنمایی شما بینهایت ممنونم.

tazarvmmr
جمعه 23 مهر 1389, 11:00 صبح
با عرض سلام
من فرمول رو اونطور که فرمودید نوشتم هنگام save این خطا رو میده:

one of the comparison operators <,<= or> , >= is expected here

در ضمن من یه جدول به نام RportTable دارم که 3 تا فیلد با نام m1,m2,m3 داره که از نوع اینتیجر هستش و میخوام که این حالت برای این سه تا فیلد اتفاق بیفته.
باز هم از راهنمایی شما بینهایت ممنونم.


دوست عزیز احتمال خیلی قوی تو تایپ اشتباه کردی
دوباره چک کن با دقت، پیام نشون میده یک اپراتور رو ننوشتی! احتمالا بجای =: فقط از = استفاده کردی
شما باید 3 تا فیلد فرمول درست کنی و تو هرکدوم همین چیزی که من گفتم رو بنویسی و فقط اسم فیلدتو عوض کنی، دقت کن که علامتها رو همهشونو باید بنویسی
من برای یکیشو مینویسم:

stringvar output;
if isnull({RportTable.m1}) then output := "0" else output := cstr({RportTable.m1});
output;

tazarvmmr
چهارشنبه 22 دی 1389, 01:38 صبح
دوست عزیز ببخشید من چند روزی سر نمیزدم به اینجا حالا اگر حل نشده مشکل هنوز:

تابع CSTR میتونه چندتا چارامتر دیگه هم بگیره

مثلا:



Cstr(Number, 0)
Cstr(Number, 0, "/")


اینهارو امتحان کنی متوجه میشی که هر کد.م چه میکنند
به جای 0 عددای دیگه بزار ببین چی میشه همینتور به جای / هم کاراکترهای دیگه بزار و نتیجه رو ببین

tazarvmmr
دوشنبه 27 دی 1389, 03:12 صبح
سلام

شما برای تبدیل داده های از نوع string به نوع Duble میتونید از تابع CDbl استفاده کنید

CDbl(your numerical string)

برای مثال:

CStr(CDbl("23000000"), 2, "/")


موفق باشید