PDA

View Full Version : سوال: چگونه ميتوان فيلدي كه تكست هست سورت نمود؟



Profesorjd
شنبه 19 دی 1388, 19:52 عصر
با سلام
در برنامه‌ام نیاز به ردیف دارم که هم شامل ماده واحده است و هم تبصره بدین صورت 1- یا 1-1- .
کاربر ممکن است ترتیب نوشتن را رعایت نکند یعنی مثلاً سطر اول را بعد از سطر دوم وارد کند . بعبارتی شماره اولی 2 میشود و شماره ردیف دومی 1 . تا 9 ردیف مشکلی نیست ولی اگر ردیف 10 به بعد ایجاد شود ترتیب سورت شده میشود 1 بعد 10 بعد 2 و ... که خرابکاری است !
1- از آنجاکه شماره‌های ردیف ممکن است به صورت 1 بعد 2 بعد 3 و .. وارد نشود به هنگام سورت کردن چطوری این مشکل را حل کنم ؟ ( فیلد تکست است )
2- از آنجاکه شماره‌های تبصره مانند 1-1- و 1-2- نیز وارد می‌شود نمی‌توانم فیلد را به نامبر تغییر دهم که مشکل سورتش حل شود . آیا راهی برای این رفع این مشل وجود دارد ؟
با تشکر
http://barnamenevis.org/forum/showthread.php?t=189339

davood-ahmadi
یک شنبه 20 دی 1388, 11:32 صبح
یکی از مهمترین کارهای یک برنامه نویس این است که برای برنامه اش Validating یا همان اعتبار سنجی را برای ورود داده ها بگذارد.
مثلا همان InputMask یک نوع اعتبار سنجی محسوب می شود که از کمی از اشتباهات کاربر را کمتر می کند و به کاربر یک خط مشئ می دهد.
شما هم باید برنامه رو بگونه ای بنویسید که کاربر نتواند اطلاعات غلط دهد. این کاری که شما می خواهید انجام دهید اگر قبل از ورود اطلاعات غلط توسط کاربر باشد خیلی خیلی بهتر از این است که بعد از اشتباه حالا بیایید دنبال اشتباهات بگردید و آنها را اصلاح کنید.
در واقع یک ضرب المثل است که می گه اگر اطلاعات غلط بدی، گزارش غلط هم می گیری

dadsara
یک شنبه 20 دی 1388, 11:49 صبح
1- از آنجاکه شماره‌های ردیف ممکن است به صورت 1 بعد 2 بعد 3 و .. وارد نشود به هنگام سورت کردن چطوری این مشکل را حل کنم ؟ ( فیلد تکست است )

شما می توانید ابتدا رشته خود را به عدد تبدیل کنید سپس آنرا مرتب کنید

Profesorjd
یک شنبه 20 دی 1388, 21:11 عصر
با سلام و تشكر
1- چون در اين فيلد ، رديف وارد مي‌شود (‌مانند -1 يا 1-1- ) نمي‌شود آنرا عدد قرار داد . بنابراين راه‌حل جناب Dadsara عملي نيست .
2- در رابطه با Inputmask چگونه مي‌شود ( با فرض بند 1 ) چون ( سواد كم بنده ) ممكن است رديف تبصره ( 1-1- ) وارد شود .
3- بنظر خودم مي‌شود قبل از اعداد مزبور 0 وارد كرد چون طبيعتاً 02 و 03 قبل از 10 سورت مي‌شوند . اما كاربر بعضاً اينكار را نمي‌كند ضمن آنكه اگر با ماسك اينكار بشود براي اعداد تك رقمي معقول است ولي براي اعداد دو رقمي مشكل ساز . همچنين دوجا اين مهم ضرورت دارد يكجا در فرم موقع ورود اطلاعات و يك بار در گزارش به هنگام چاپ .
4- به فرض بند 3 در چه رويدادي و چگونه ( بدون ماسك ) مي‌شود اينكار را كرد ؟

dadsara
دوشنبه 21 دی 1388, 08:39 صبح
1- چون در این فیلد ، ردیف وارد می‌شود (‌مانند -1 یا 1-1- ) نمی‌شود آنرا عدد قرار داد . بنابراین راه‌حل جناب Dadsara عملی نیست .

سلام
دوست عزیز در سوال مطرح شده در اولین پست این تاپیک جنابعالی سوال خود را به دو بخش تقسیم نموده اید در قسمت اول فقط اعداد وجود دارد ولی از نوع رشته هستند و در قمست دوم اعداد شما ترکیبی از عدد و خط تیره هستند لذا بنده همانطور که مشاهده می فرمائید فقط جواب قسمت اول سوال شما را ارائه نموده ام

Profesorjd
سه شنبه 22 دی 1388, 20:10 عصر
با سلام و تشكر
درست مي‌فرماييد اما چون هر دو مورد مربوط به يك موضوع است با اعلام اينكه تغيير فيلد جوابگو نيست خواستم راهنمايي كنم كه ذهن اساتيد به آن سمت نرود .
در هر صورت ممنون ولي بنده هنوز به پاسخ نرسيده‌ام .

Profesorjd
چهارشنبه 23 دی 1388, 22:25 عصر
با سلام
با اين روش بنده به جوابي رسيدم البته انتظار دارم كه جواب بهتري اساتيد راهنمايي فرمايند .
1- به هنگام ورود اطلاعات قبل از اعداد 1 تا 9 صفر وارد شود .
2- چون اين صفرها در چاپ بد شكل مي‌شوند ابتدا دو رقم Left گرفتم و شرط گذاشتم كه اگر كمتر از 10 بود جاي صفر وارد شده هيچي قرار گيرد ( "")
3- Rigth‌ رديف را با استفاده از Len كه 2 رقم كم شود ، گرفتم
در نهايت 2را با 3 & ‌قرار دادم
با اين روش كاربر صفر را قبل از رقم وارد مي‌كند ولي با استفاده از بند 2 و 3 اين صفر گزارش نمي‌شود و ضمن آن سورت هم انجام مي‌شود .