PDA

View Full Version : فارسی شدن اعداد در گزارش گیری کریستال ریپورت؟



khz-web1
سه شنبه 19 آذر 1387, 01:11 صبح
سلام
می خواستم بدونم فارسی شدن اعداد در گزارش گیری کریستال ریپورت چجوری؟
کم هرچی بهش ور رفتم نشد ....!!!!
با تشکر

kablayi
شنبه 23 آذر 1387, 20:16 عصر
سلام ...
از فونت های سری B استفاده کنید ...

موفق باشید

afsharm
یک شنبه 24 آذر 1387, 09:51 صبح
سلام ...
از فونت های سری B استفاده کنید ...

موفق باشید

نه!!!!!!!!! اصلا از سری بی استفاده نکنید. اونها فونت‌های غیر استاندارد هستند. به جای آنها از فونت‌های فارسی وب یا ایرماگ استفاده کنید. مشکل فارسی نبودن اعداد را هم یا با Regional Settings ویندوز یا از داخل کد عوض کنید.

من در اینجا یک سری از فونت‌های رایج فارسی و مشکلات آنها را بررسی کرده‌ام: http://afsharm.blogspot.com/2008/12/blog-post.html

kablayi
دوشنبه 25 آذر 1387, 11:36 صبح
نه!!!!!!!!! اصلا از سری بی استفاده نکنید. اونها فونت‌های غیر استاندارد هستند. به جای آنها از فونت‌های فارسی وب یا ایرماگ استفاده کنید. مشکل فارسی نبودن اعداد را هم یا با Regional Settings ویندوز یا از داخل کد عوض کنید.

من در اینجا یک سری از فونت‌های رایج فارسی و مشکلات آنها را بررسی کرده‌ام: http://afsharm.blogspot.com/2008/12/blog-post.html

مطلب جالبی بود ...
یعنی به نظر شما بایستی فقط از 4 فونت «ترافیک فارسی وب»، «تبریز ایرماگ»، «شهرزاد» و «لطیف» استفاده کنیم؟

من همیشه از سری B استفاده میکنم ... و مشکلی هم ندارم ... چون در MSSQL2008 از فونت tahoma استفاده میکنم و فقط در گزارش گیری از فونت های سری B استفاده میکنم ... به مشکلی هم بر نخوردم ...

میشه دقیقتر توضیح بدین کجای کار با مشکل مواجه میشیم ...؟

ممنون

afsharm
سه شنبه 26 آذر 1387, 07:56 صبح
منظورم اینه که بهتره تمام سعی‌مان را بکنیم تا از فونت‌های استاندارد استفاده کنیم.
دو فونت شهرزاد و لطیف را می‌توانید مبنا بگیرید چون: تمام بلوک عربی یونیکد را به جز چند کاراکتری که مورد استفاده ما نیستند را پیاده سازی کرده و علاوه بر آن شامل کاراکترهای کدپیج ۱۲۵۲ هم هست. کدپیج ۱۲۵۲ همان کاراکترهای معمول انگلیسی و لاتین هستند که ممکن است ما ایرانی‌ها و اعراب نیاز به کار کردن با آنها داشته باشیم. یک سری فونت دیگر هم هستند که تا حد خیلی خوبی به این دو فونت واقعا استاندارد نزدیک هستند و اختلافاتشان را در این بحبوبه‌ای که هیچ فارسی زبانی به فکر استاندارد نیست می‌توان در نظر نگرفت. این سری عبارتند از کلیه فونت‌های فارسی وب، کلیه فونت‌های ایرماگ به جز شفیق کرد و شفیق ازبک، فونت ایران نستعلیق شرکت هامون که به سفارش شورای عالی اطلاع رسانی تهیه شده و چند تا از فونت‌های معروف مایکروسافت مثل آریال و تاهوما که نسخه ویندوز ویستای آنها سازگاری بهتری دارند.
فونت‌های سری بی به خاطر راحتی کاربر بعضی کاراکترها را به شکل اشتباه پیاده سازی کرده است. مثلا هر دو حرف «ی» فارسی و «ي» عربی نقطه دار به شکل فارسی آن نشان داده می‌شود که این اشتباه است. چون اطلاعات در بانک اطلاعاتی یا هرجای دیگر به وسیله کد آنها ذخیره می‌شود نه به وسیله شکلی که فونت‌های سری بی یا فونت شهرزاد نشان می‌دهد. کاربر به واسطه صفحه کلید غیر استانداردی که در همه ویندوزهای ایکس پی و فارسی سازهای رایج آن وجود دارد حروف «ي» و «ك» عربی را وارد می‌کند و این اطلاعات در بانک اطلاعاتی، فایل‌های آفیس، اینترنت و دیگر جاها منتشر می‌شوند در حالی که کاربر به این دلیل که فونت مورد استفاده‌اش همه کاراکترها را به طرز غلطی به شکل فارسی نشان می‌دهد متوجه این اشتباه نمی‌شود مگر زمانی که نتیجه کارش را در یک محیط استاندارد مثل صفحه وبی که فونت تاهوما دارد یا فایل عکسی که برای تولید آن از فونت‌های پیش فرض سیستم استفاده می‌شود یا برنامه‌هایی مثل Crystal Report یا MS SQL Reporting Services ببیند. غیر از اینها مشکل نمایش غلط اعداد لاتین به شکل اعداد فارسی و مشکلاتی که Regional Settings ویندوز دارد را هم در نظر بگیرید.
راه حل من این است:
۱- هر نوع فونت غیر استانداردی را از سیستم پاک کرده و فونت‌هایی را که در بالا اشاره شد نصب نمایید.
۲- از یک IME (فارسی ساز صفحه کلید ویندوز) که مطابق آخرین استاندارد سازمان استاندارد یعنی ۹۱۴۷ است استفاده کنید تا شر هر نوع کاراکتر غیر استاندارد برای همیشه کنده شود. یک نمونه از همین IMEها را همان شرکت فارسی وب شریف تولید کرده که در سایتش می‌توانید آن را پیدا کنید.
۳- قسمت سخت: باید بعضی قسمت‌های برنامه‌ای که نوشتید را بازنویسی کنید. مثلا آنجا که تاریخ میلادی را به تاریخ شمسی تبدیل می‌کنید باید از اعداد فارسی استفاده کنید نه از اعداد لاتین. و باز هم مثلا اگر یک کنترل دریافت عدد از کاربر دارید که این کنترل طوری تنظیم شده که فقط اعداد را قبول کند را طوری عوض کنید که اعداد فارسی (نه عربی) را که کد یونیکد آنها متفاوت است را هم دریافت کند.
۴- قسمت سخت: گزارش‌های ساخته شده را هم با توجه نرم افزار استفاده شده کمی باید دستکاری کرد. مثلا جاهایی که مثل شماره ردیف یک عدد Autonumber گذاشته‌اید را باید با یک چیزی مثل Expression در Reporting Services به اعداد فارسی واقعی تبدیل کنید.
۵- داشت یادم می‌رفت!: Regional Setting ویندوز را هم حتی به صورت موقت بر روی انگلیسی و ایالات متحده قرار دهید تا هر گونه اشتباه احتمالی را کشف کنید. بهتر است زبان پیش فرض برای زبان‌های غیر یونیکد را به طور موقت از فارسی درآورده و برابر انگلیسی تنظیم کنید.
۶- همه فایل‌های کد و غیره را با یک Encoding یونیکد مثل utf (کدپیج ۶۵۰۰۰۱) ذخیره کنید.
۷- صفحات وب را هم به صورت utf برای کاربر ارسال کنید.


با تشکر

esfahanitg
جمعه 06 دی 1387, 18:19 عصر
بازم كه دعواي بيهوده بر سر 1 مسئله ساده
براي انجام اينكار از هر فنتي دوست داري استفاده كن عزيزم.فقط بايد كنترل پنل كامپيوتر رو تنظيم كني اونم اينجوري :
اولا كه ويندوزت فارسي باشه
دوما برو تو قسمت Regunal and language از controlpanel بعدش از برگه Regional obtions گزينه customize رو انتخاب كن و بعد كمبو جلو عبارت digital substitution را روي national تنظيم كنيد.

raha_1362
شنبه 01 آبان 1389, 11:44 صبح
Function (stringVar digits )
if (Trim(digits) = "")
then
(
digits;
)
else
(
digits := Replace(digits,'1', '۱');
digits := Replace(digits,'2', '۲');
digits := Replace(digits,'3', '۳');
digits := Replace(digits,'4', '۴');
digits := Replace(digits,'5', '۵');
digits := Replace(digits,'6', '۶');
digits := Replace(digits,'7', '۷');
digits := Replace(digits,'8', '۸');
digits := Replace(digits,'9', '۹');
digits := Replace(digits,'0', '۰');
digits;
)


طریقه ساختش هم به این صورت است که وقتی Crystal Report بازه(مثلاً یک گزارش باز کردیم)، در نوار ابزار اصلی ویژوال استودیو، دکمه Crystal Reports (یا Alt+R) را بزنید. بعد در زیر منوی Report (دکمه R را هم بزنید سریع تر بهش می رسید)، دکمه Formula WorkShop(یا F) را می زنیم. در پنجره باز شده، در پنل سمت چپ، روی Report Custom Function که شبیه یک چرخ دنده است، راست کلیک می کنیم و گزینه New را انتخاب می کنیم. حالا نام تابع را می نویسیم که اسم تابع من PersianNumber بود. بعد گزینه Use Editor را می زنیم.

البته من این کدها را از همین سایت گرفتم و آماده به شما تحویل می دم
موفق باشید