PDA

View Full Version : sort date in persianDate



ClaimAlireza
سه شنبه 19 تیر 1386, 12:28 عصر
دوستان من در این مورد سرچ کردم ولی چیزی دستمو نگرفت.

ببینید برای تاریخ فارسی من از Persia.dll استفاده کردم.(sundate.simple)

حالا برای مرتب کردن فیلد ها بر اساس تاریخ دچار مشکل شدم.دلیلش هم اینه که تاریخ رو به صورت string تو بانکم قرار دادم.

خوب پس نوع رو به datetime تغییر دادم.

تاریخ مورد نظر رو توی یه textbox ریختم .از طریق زیر


<InsertParameters>
<asp:ControlParameterName="date"ControlID="TextBox1"PropertyName="Text"/>


تاریخ رو به بانک میفرستم.

چون textbox نوع داده string داره از convert.toDateTime(textbox.text)) برای تبدیل استفاده کردم ولی ارور میده.

حالا چیکار کنم.

Behrouz_Rad
سه شنبه 19 تیر 1386, 17:58 عصر
معمولا در یک کاربرد حرفه ای، (مثل سیستم VB)، تاریخ ها به شکل میلادی ذخیره میشن و در زمان پردازش هست که تبدیل به تاریخ شمسی میشن.
موفق باشید.

Nightbat
سه شنبه 19 تیر 1386, 18:00 عصر
از کدوم قسمت error می گیره ؟

ClaimAlireza
چهارشنبه 20 تیر 1386, 09:33 صبح
از این قسمت



convert.toDateTime(textbox.text))


اینم ارورش:



String was not recognized as a valid DateTime

Nightbat
چهارشنبه 20 تیر 1386, 10:57 صبح
برای اینکه بتونی از تبدیل استفاده کنی باید string ورودی به فرمتهای خاصی باشه تا بتونه تبدیلش کنه. ( مثلا "2007/07/11 10:18:10 ق.ظ") برای اینکه فرمت این ورودی را بتونی پیدا کنی برعکس کار کن، یعنی Date رو به String تبدیل کن ببین چه فرمتی بهت میده.


DateTime.Now.ToString()
DateTime.Now.ToShortDateString()
...

Sayehzendeh
چهارشنبه 20 تیر 1386, 12:16 عصر
شما باید همینطور که دوستان گفتند مقدار ورودی برای دستور Convert را آماده کنید

برای اینکه بتونی از تبدیل استفاده کنی باید string ورودی به فرمتهای خاصی باشه تا بتونه تبدیلش کنه. ( مثلا "2007/07/11 10:18:10 ق.ظ") برای اینکه فرمت این ورودی را بتونی پیدا کنی برعکس کار کن، یعنی Date رو به String تبدیل کن ببین چه فرمتی بهت میده.


DateTime.Now.ToString()
DateTime.Now.ToShortDateString()
...

Behrouz_Rad
چهارشنبه 20 تیر 1386, 13:13 عصر
دوستان توجه داشته باشند که در SQL Server، محدوده ی مجاز تاریخ بین 1753 و 9999 هست و مسلما تاریخی مثل سال 1386 پذیرفته نمیشه! و به همین دلیل خطایی که دوستمون با اون برخورد کردند رخ میده.
راه حل همانی است که عرض کردم.

موفق باشید.

ClaimAlireza
چهارشنبه 20 تیر 1386, 14:28 عصر
جناب راد اونوقت برای پر کردن یک gridview باید تک تک تاریخ ها تبدیل بشن آیا این موضوع باعث کند لود شدن صفحه نمیشه.

Behrouz_Rad
چهارشنبه 20 تیر 1386, 15:22 عصر
خیر...
این تاخیر اصلا محسوس نیست که ارزش به حساب آوردن داشته باشه.
نهایتش اینه که تو در هر صفحه بخوای 100 رکورد رو نمایش بدی...

موفق باشید.

kkaajjaall
یک شنبه 04 شهریور 1386, 15:14 عصر
من هم می خوام توی جدولی که دارم براساس یک تاریخ خاص search کنم و حاصل رو در یک data grid نمایش بدم اما وقتی تاریخ رو می نویسم توی text box که براساس اون search کنه از (/) ایراد می گیره و می گه این اپرند رو نمی شناسه حالا چه میلادی بنویسم چه شمسی . چه کنم ؟

hamed_bostan
یک شنبه 04 شهریور 1386, 15:38 عصر
با اجازه از اقا بهرو راد
من خودم به شخصه فیلد تاریخ رو از نوع nvarchar(10) می گیرم و تاریخ رو شمسی توش ذخیره می کنم و هنگام جستجو بر اساس قاعده کد های اسکی و مقایسه رشته ها جستجوم رو انجام می دم. مطمعنا همه می دونین که:



dim str1 ,str2,str3 as string
str1="1382/01/01"
str2= "1380/12/01"
str3 = "1380/12/03"



طبق فرض باله همه می دونیم که اگر مقایسه کنیم نتیجه:



str2<str3<str1



می تونید تو شرط تست کنید . فقط مهم اینه که اینجا روزهای یک رقمی رو به جای 1 برابر 01 بزنید

behrooz69
چهارشنبه 08 آبان 1392, 03:42 صبح
همانطور که دوست خوبم حامد خان گفتن عمل کن . یعنی تو دیتابیست نوع فیلد تاریختو nvarchar انتخاب کن و تو برنامت از یه MaskedTextBox استفاده کن و validating اون رو 00-00-0000 بذار و واسه اینکه تو دیتابیست فارسی سیو بشه از منوی properties سمت راست مربوط به MaskedTextBox گزینه RightToLeft رو yes کن . مشکلت رفع میشه . حالا سرچ کن مشکل نداری تو Sql server یه query بگیر تست کن خبر بده انشاله که مشکل رفع شه