PDA

View Full Version : مرتب سازی فیلد های فارسی



habdolah
سه شنبه 04 شهریور 1382, 21:58 عصر
لطفا اگر میتوانید کمک یا راهنمایی کنید.
در table میخواهم مرتب سازی و ایندکس انجام دهم بنحوی که حروف مختص فارسی نیز در محل خود قرار گیرند. آیا در هنگام تعریف جدول این امکان وجود دارد . زیر حروف گچپژ در ابتدای ایندکس قرار میگیرند در صورتی که در اکسل مشکلی ندارم. لازم به ذکر است من در محیط WIN2000 کار میکنم. قبلا از لطف دوستان متشکرم

Mohammad_Mnt
سه شنبه 04 شهریور 1382, 23:08 عصر
اول برنامه دستور زیر رو قرار بدین و بعد ایندکس ها رو دوباره بسازین

SET Collate To "Arabic"

علی رفیعی فرد
چهارشنبه 05 شهریور 1382, 12:41 عصر
میتونی یه تابع بنویسی و از اون در اندکس هات ازش استفاده کنی
مثلا تابع Sort
Inde On Sort(Name) Tag Name

mehran_337
چهارشنبه 29 شهریور 1385, 14:04 عصر
من از تابعی که آقا کیا به اسم conv ساخته بودن استفاده می کنم همون
return chrtran('پژگچ','بزکج')
بعد من اونو گسترش دادم و حروف ا - آ - و ک که با 2 کد وجود داره رو همه رو یه کارکتر مشابه جایگزین کردم . اما چون در این تابع گفتیم بجای پ ب در نظر بگیر در مرتب سازی پ رو ب فرض می کنه و بین دو کلمه بوشهر وپاوه اول پاوه رو سورت بعد بوشهر.
مشکل بعدیم اینه :
فرض کنید من گریدی دارم که در "داینامیک بک کالر " دستور دادم رکوردهای زوج رو رنگی کن با تابع recno()
اما وقتی مرتب سازی می شه رکورد ها جاشون عوض می شه خب این طبیعیه.
می خوام بدوم در جدول مرتب شده چطور جای فعلی رکورد و تشخیص بدیم آیا تابعی هست که وقتی رکورد 20 در حالت مرتب شده در جای 3 قرار گرفت مقدار 3 رو بر گردونه . یا مثلا توی گرید می تونیم ردیف فعلی رو بدونیم که در داینامیک بک کالر با شماره رکورد کار نکنیم آیا شماره ردیف وجود داره؟؟
با تشکر

rezaTavak
پنج شنبه 30 شهریور 1385, 15:16 عصر
سلام
من از یک تابعی که خودم نوشته ام استفاده میکنم. و توی اون هم مرتبسازی درست انجام میشه. توی ایندکس بانک هم می نویسم farsisort(cNameFiled) به جای cfiledname هم نام فیلدم را قرار میدهم.

rezaTavak
پنج شنبه 30 شهریور 1385, 15:19 عصر
این هم فایلش:

mehran_337
جمعه 31 شهریور 1385, 22:28 عصر
ممنونم جناب توکل دانلودش کردم . دیگه وقتی شما ازش استفاده می کنید حتما مشکل ما رو حل می کنه . بازهم ممنونم

mehran_337
یک شنبه 02 مهر 1385, 08:15 صبح
جناب آقای توکل ! دانلود کردم اما مرتب سازی بازهم درست نشد . البته از تابع alltrim باید استفاده می کردم و گرنه کلماتی که تعداد حروف کمتری دارند را اول سورت می کرد . اگه می شه من و راهنمایی کنید

hamed_m
دوشنبه 03 مهر 1385, 03:37 صبح
پارس پندار ادعای مرتب سازی صحیح "پژگچ" رو میکنه. اتفاقی دیدم:
http://www.parspendar.net/fa/general-info.php
البته نمیدونم می ارزه یا نه چون قیمت نداده.
اما میشه یه تابع نوشت که اون فیلد رو بخونه و به عدد تبدیل کنه . مثلا برای الف 1 برای ب 2 الی آخر و بعد سورت بر اساس شماره ها انجام بشه.

mehran_337
دوشنبه 03 مهر 1385, 07:48 صبح
حامد جان سلام! کجایی پیدات نیست؟؟
تکه کدهای جالب و عقب انداختیا !! ما که منتظر کدهای جالبت هستیم.
در ضمن بابت پارس پندار دستت درد نکنه و لی می خوام بدونم توی این سالها بچه ها این مشکلو چطوری حل کردند . یعنی در برنامه هاشون چطور مرتب سازی می کردند.؟
به هر حال من خیلی به تابع درستی در این زمینه نیاز دارم ...

rahro
دوشنبه 03 مهر 1385, 10:21 صبح
سلام
همانطور که حامد عزیز گفت پارس پندار این مشکل رو حل کرده من بر خلاف نظریه تمام بچه های انجمن این نرم افزار رو خریدم و از اون در یک پروژه تا به حال استفاده کردم و واقعا" جواب خوبی گرفتم بسیاری از مشکلات فارسی حل میشه. البته قیمتش 95 هزار تومن است
رهرو

mehran_337
دوشنبه 03 مهر 1385, 10:26 صبح
نمی تونی فقط توابعشو بدی حتما باید کلشو بخریم؟
--------------------
ایها الناس یه تابع برای سورت فارسی ...

binyaz2003
دوشنبه 03 مهر 1385, 10:57 صبح
تمام توابع پارس پندار در توابع fll هستند که اونها هم برای اجرا قفل سخت افزاری رو چک میکنند

mehran_337
دوشنبه 03 مهر 1385, 11:31 صبح
پس بچه ها برای سورت کردن اطلاعات فارسی چی کار می کنن . خب اینکه در برنامه این امکان باشه که نمیشه منکر شد . چون توی هر بانکی باید کاربر بتونه به ترتیب الفبا مشاهده کنه...

mehran_337
سه شنبه 04 مهر 1385, 09:59 صبح
کسی نمی خواد به داد ما برسه؟؟؟؟؟؟

rahro
سه شنبه 04 مهر 1385, 10:14 صبح
نمی تونی فقط توابعشو بدی حتما باید کلشو بخریم؟
--------------------
ایها الناس یه تابع برای سورت فارسی ...
مهران جان سلام :
از اینکه بخوام تابع اونو برایتان اپلود کنم حرفی ندارم ولی کار نمیکنه ! البته :
یک نکته جالب اینجاست که جای تامل داره
اگر یک فرم رو طراحی کنی و این فرم رو به کامپیوتر دیگری انتقال بدی دیگه به هنگام استفاده از فرم قفل رو چک نمیکنه!!!؟ البته این موضوع رو خود شرکت پارس پندار هم متذکر شده بود من فکر میکنم یک شماره سریال تو مموری فورم میشنه که کارش تست قفله؟! نظر شما چیه!
رهرو

mehran_337
سه شنبه 04 مهر 1385, 11:27 صبح
نه من دندون طمع و از پارس پندار کشیدم.. فقط الان هم نیاز من سورت فارسیه.
یه چیز بی دردسر

mehran_337
چهارشنبه 05 مهر 1385, 08:22 صبح
هم اکنون نیازمند کمکهایتان هستیم

hamed_m
چهارشنبه 05 مهر 1385, 19:41 عصر
آقا شما خودتون تقریبا انجامش دادید. فقط کافیه بجای کاراکتر شماره قرار بدید و بعد سورت کنید. تابع آقای توکل هم منطقا باید درست کار کنه.
اشکال از کجاست؟

rezaTavak
جمعه 07 مهر 1385, 11:07 صبح
سلام

این هم یک جدول از شهرهای ایران که دو tag دارد. بسته به اینکه بخواهید بر اساس استان با شهر باشد آنرا set order کنید. البته باید تابع farsisort در setpath یا موارد قابل جستجوی فاکس باشد.

mehran_337
شنبه 08 مهر 1385, 08:50 صبح
آقا رضا دستت درد نکنه . جالبه اینکه با فایل شما خوب کار می کنه . اما با فایلهای من مشکل داره . در ضمن چرا شما از alltrim() استفاده نکردید و درست نشون می ده اما اگه من از اون استفاده نکنم بر اساس تعداد حرف مرتب می شند کلمات 3 حرفی اول و کلمات طولانی تر آخر . بعدشم باید بگم farsisort(allt(fieldname))
اینهم فایل من

binyaz2003
شنبه 08 مهر 1385, 11:12 صبح
احتمالا مشکل از کیبوردته
این و طبق روشی که گقته نصب کنید کاملا درست عمل میکنه

http://www.tebyan.net/download/new/download.asp?fileid=627

mehran_337
شنبه 08 مهر 1385, 12:47 عصر
اون dbf که من فرستادم چون قدیمیه برای راست چین کردنش از space استفاده می کرد بهمین خاطر نیاز به alltrim داشت . مشکل از تایع آقای توکل نبود.
حالا مرتب شده اش خوبه اما نمی دونم چرا بعضی حروف بازهم سرجاش نیستند حرف ب و ت جالبه که همه ب و ت ها درست هستند الا چند تا اسم.
روش آقای بی نیاز هم جواب نداد اما فایل خوبی بود جای دیگه به درد می خوره

rezaTavak
یک شنبه 09 مهر 1385, 12:58 عصر
سلام

اگر می گفتید ک و ی شاید چون اولین بار این تابع را زمان ویندوز ۹۸ نوشتم اما در ویندوز XP تغییرش دادم.

شاید یک روز طول کشید دو رشته را درست کنم!!!

راهش هم این بود:

کلیه کاراکترها را در یک جدول ذخیره کردم. (از 128 تا ۲۵۵)
بعدش با excel سورت کردم و جدول بدست آمده را به رشته تبدیل کردم. بعدا که XP آمد حروف ک و ی را هم درست کردم. شما میتونید از ۳۲ تا ۲۵۵ را هم همین کار را باهاش انجام بدید.



امامشکل اساسی از ویندوز است که یونیکد نیست.

mehran_337
دوشنبه 10 مهر 1385, 07:31 صبح
خدا رو شکر تا حالا که در یکی دو فرم مشکلی نداشتم . انشاءالله که تا آخر همین طور باشه
از زحمات شما متشکرم

mpg_of_shb
دوشنبه 22 آبان 1385, 13:28 عصر
خدا رو شکر تا حالا که در یکی دو فرم مشکلی نداشتم . انشاءالله که تا آخر همین طور باشه
از زحمات شما متشکرم
من یک تابع دارم که مشکل رو کامل حل کرده اگر فیلدت انگلیسی هم باشه بازم کار میکنه
فقط باید یک فیلد معکوس توی table در نظر بگیری اندازه فیلد فارسیت و معکوس فرسیت رو توی اون بریزه بعد توی مرتب سازی براساس فیلد معکوس مرتب کنی
index on fsis_field_name tag tag_name
و بعد در نمایش فارسی اونو انتخاب کنی
set order to tag_number
همه چیز حله .
هر کی میخواد بگه

mehran_337
دوشنبه 22 آبان 1385, 14:09 عصر
کاش آپلود می کردین و گذاشتین . به هر حال من نیاز دارم. با تشکر