PDA

View Full Version : سوال: مرتب کردن تاریخ از نزدیک به دور



m2011kh
جمعه 12 مهر 1392, 19:40 عصر
سلام و خسته نباشید خدت همه دوستان و اساتید محترم.

من یه گرید دارم که اطلاعات بر حسب شماره تماس جستجو شده و نتیجه در گرید نشون داده میشه.

خوب این برنامه خدمات داده شده به مشتری رو ثبت میکنه.فرض کنین مشتری وارد خدمات کامپیوتری شده و تقاضای ارائه خدمات رو میکنه.ما از اون شماره تماسش رو میگیریم و برنامه اون شماره رو جستجو میکنه و نمایش میده.من میخوام نتایج پیدا شده به ترتیب تاریخ نشون بدم.یعنی اطلاعات با تاریخ نزدیک تر به تاریخ روز بالا اومده و اطلاعات دورتر به پایین جدول نزول پیدا کنه.

اول خواستم با استفاده از کد ORDER BY استفاده کنم اما اونطوری که تست کردم، موفق نبودم.

اگه راهی مد نظر دارید اعلام کنید.

ممنونتون میشم

موفق و سربلند باشید.

M.M.D

mehran901
جمعه 12 مهر 1392, 19:56 عصر
http://visualbasic.freetutes.com/learn-vb6/sorting-using-arrays.html

m2011kh
جمعه 12 مهر 1392, 20:02 عصر
مهران جان ما انگلیسی مون خوب نیست،در مورد استفاده از تابع میشه یه کم توضیح بدی؟؟؟

ممنون.

موفق و سربلند باشید.

M.M.D

m2011kh
یک شنبه 14 مهر 1392, 14:44 عصر
دوستان اگه راه حل دیگه ای مد نظر دارین لطف کنین بگین.

موفق و سربلند باشید.

M.M.D

vbhamed
یک شنبه 14 مهر 1392, 16:01 عصر
سلام
راهش همون Order by هست، احتمالا جايي از كدتون مشكل داره، كد يا نمونه فرمتون رو بزاريد تا بررسي بشه

m2011kh
یک شنبه 14 مهر 1392, 19:11 عصر
این از کد:
Private Sub txtPhone_Change()
'Peyda Kardane Phone Hayyi Nazdik Be Shomare PHone Vared Shode
If txtPhone.Text <> Empty Then
DataPhone.RecordSource = "SELECT Phone,Name,Sys,Model,Expert,DateS,Problem,ALong,St at FROM Buys WHERE Phone Like '%"_
& Trim(txtPhone.Text) & "%' ORDER BY DateS ASC"
DataPhone.Refresh
Else
DataPhone.RecordSource = "SELECT Phone,Name,Sys,Model,Expert,DateS,Problem,Along,St at FROM Buys WHERE Name=''"
DataPhone.Refresh
End If
End Sub
اگه Order رو به صورت سعودی بزارم.ماه ها درسته امّا روز ها،نه.خودتون مشاهده کنید:
12/7/1392
14/7/1392
25/6/1392
30/5/1392
اگه دقت کنید همه درسته اما در دو نتیجه بالا هر دو از یک ماه هستن و 14/7/1392 به تاریخ روز نزدیک تر هست تا 12/7/1392 امّا میره پایین.

و نتیجه در صورت نزولی بودن Order By:
30/5/1392
25/6/1392
14/6/1392
13/6/1392

ممنون میشم بررسی کنید.

موفق و سربلند باشید.

M.M.D Security Team

vbhamed
سه شنبه 16 مهر 1392, 16:54 عصر
سلام

اول اينكه جمله "به تاريخ روز نزديكتر باشه پس بايد بياد اول" ميشه مرتب سازي نزولي نه صعودي
فرض كنيد امروز 15 ام هست پس ديروز 14 ام و پريروز 13 ام و دو روز قبل 12 ام يعني اگر به صورت نزولي مرتب كنيم ميشه اون چيزي كه شما مي‌خواين

15
-----
14
13
12

اما مورد بعدي اينكه احتمالا فيلد تاريخ شما از نوع متني هست نه عددي
بنابراين هر دو مرتب سازي كه مي‌بينيد درسته و در مرتب سازي اول يعني صعودي، بر اساس اولين حرف رشته مرتب شده يعني كاراكتر "1"، بعد 2 و 3 و حروف دوم به بعد هم به همين شكل، يعني عدد 2 قبل از عدد 4 قرار مي‌گيره، در كل مرتب سازي شما رشته اي هست نه عددي

اگر اينطور نيست، لطفا يك بانك نمونه قرار بدين

m2011kh
سه شنبه 16 مهر 1392, 19:00 عصر
شما درست میفرمایین نوع فیلد Text هست.

امّا به دلائلی مجبور هستم نوع فیلد متن باشه.
اگه راه حلّی وجود داره بگید.

اگه نه که همون مرتب سازی نزولی فعلا کارمو راه میندازه.

موفق و سربلند باشید.

M.M.D

vbhamed
چهارشنبه 17 مهر 1392, 21:17 عصر
سلام
روش نزولي همون چيزيه كه مي‌خواين، مگه باهاش مشكلي دارين ؟
البته اگر اجبارتون براي استفاده از فيلد متني به جاي عددي، مميزهاي بين ارقام هست كه با يك كوئري ساده قابل حل شدنه

m2011kh
جمعه 19 مهر 1392, 09:29 صبح
بله روش نزولی مشکل را تا حدّی حل میکنه امّا.

به قول شما امروز پانزدهم هست.دیروز 14 و پریروز 13 ولی دیروز 14 مهر هست.ولی من در بانکم 15 اسفند 91 هم دارم.خب در جدول 15 اسفند سال قبل میاد بالا و 14 مهر سال جاری میره زیر.

موفق و سربلند باشید.

vbhamed
جمعه 19 مهر 1392, 14:30 عصر
سلام
نگفتيد اجبارتون براي استفاده از فيلد متني چيه ؟ شايد بشه حلش كرد

m2011kh
جمعه 19 مهر 1392, 23:27 عصر
سلام و خسته نباشید.

آقا حامد،به دلیلی مشکلاتی که با نوع داده Date داشتم،از Text استفاده کردم و الان تقریبا پروژه به اتمام کار خودش رسیده و تا اینجای کار برنامه با همین Text کنار اومده.اگه من الان بخوام نوع داده رو عوض کنم ویرایش کل پروژه کمی زمان بر هست و من وقت کافی برای این کا رو ندارم و وقتم محدود هست.

اگه مشکل Date قابل حل باشه و بشه از نوع داده عددی هم استفاده کرد،الان و در این پروژه نمیتونم نوع داده رو از text به چیزی تغییر بدم.

موفق و سربلند باشید.

M.M.D

vbhamed
شنبه 20 مهر 1392, 07:05 صبح
سلام
خب حالا براي پروژه هاي بعدي در نظر داشته باشيد كه اصلا از نوع Date استفاده نكنيد چون تاريخ ما شمسي هست و Date با ميلادي كار مي‌كنه
بهتره از نوع داده Long استفاده كنيد و تاريخها رو به صورت روز و ماه دو رقمي و سال 4 رقمي ذخيره كنيد مثلا 13920703
اينطوري هم جستجو راحته و هم مشكلي در مرتب سازي پيش نمياد
براي نمايش تاريخ هم خيلي راحت ميشه با يك Mask يا با استفاده از يك كوئري تاريخ رو با علامت / نشون داد يعني 1393/07/03

m2011kh
سه شنبه 23 مهر 1392, 14:40 عصر
ممنون آقا حامد.

حتما راهنمایی تونو در نظر میگیرم.

موفق و سربلند باشید.

M.M.D