باسلام
یه برنامه تحت ویندوز با بانک اطلاعاتی اکسس نوشتم؛ توی بانکم یه فیلدی دارم از نوع datetime و از طریق برنامه کاربر تاریخ شمسی را انتخاب می کند و ثبت میکند چه راه حلی برای ثبت شدن تاریخ هایی مث 31 اردیبهشت،31تیر و شهریور ماه دارید؟
با تشکر
باسلام
یه برنامه تحت ویندوز با بانک اطلاعاتی اکسس نوشتم؛ توی بانکم یه فیلدی دارم از نوع datetime و از طریق برنامه کاربر تاریخ شمسی را انتخاب می کند و ثبت میکند چه راه حلی برای ثبت شدن تاریخ هایی مث 31 اردیبهشت،31تیر و شهریور ماه دارید؟
با تشکر
سلام
قبل از ثبت باید تاریخ شمسی رو به میلادی تبدیل کنید و مجدد موقع خوندن از دیتابیس و نمایش تاریخ رو به شمی تبدیل کنید.
مسلمه که نوع DateTime برای ذخیره تایخ های میلادی بکار میره و تعداد روزهای ماه های میلادی با ماه های شمسی تطبیق نداره.
موفق باشید.
قوانین سایت برنامه نویس [ به سوالات از طریق پیام خصوصی پاسخ داده نمی شود ]
برای مشکل شما نوع دیتا تایپ یا فیلد تاریختون باید از نوع text باشه تا 31 6 ماه اول سال رو قبول کنه و براحتی هم میشه با تاریخ ها هم کار کرد یعنی باید برای اضافه یا کم کردن یا محاسبات تاریخ (اگر لازم بود) تاریخ رو از بانکتون در قالب رشته بگیرید و توی برنامتون به DateTime تبدیل و هر کاری که دوست داشتید انجام بدید
ممنون از پاسختون
میشه فیلد تاریخ را رشته ایی گرفت و بعداً میشه بین دوتاریخ جست و جو کرد یا باید حتما نوع فیلد تاریخ باشه؟
سلام
دوست عزیز، خواهشمندم راهنمایی اشتباه نکنید.
تاریخ باید به صورت تاریخ نگهداری بشه نه رشته. و هنگام نمایش تبدیل به تاریخ شمسی بشه. هر راه دیگری اشتباه هست.
اینطور که گفته میشه گویا ویندوز 10 از تاریخ شمسی هم پشتیبانی میکنه و برای تبدیل تاریخ به شمسی هم دیگه مشکلی وجود نخواهد داشت.
صبا صبوحی
سلام دوست عزیز من هم این مشکل رو داشتم البته با sql یک نکته رو توجه کن تو دایکیومنت زده datetime از 0 تا 9999 رو میگیره
https://msdn.microsoft.com/en-us/library/ms187819.aspx
ازاونجا که ماکروسافت رسما اعلام کرد من شمی رو پشتیبانی میکنم منم به اشتباه فکر کردم میتونم شمسی رو زخیره کنم این کارو انجام دادم برنامه رو تحویل دادم
رو همین تاریخ هایی که شما میفرمایید به مشکل خوردم و اگر دقت کنید با تبدیل تاریخ به میلادی متو جه میشید ماه فبریه میلادی 28 روزه و یک ماه در مینون 30 و 31 میشه
و sql هم اینو نمیشناخت
راه حل یک کلاس بسازید تاریخ روموقعذخیره به میلادی تبدیل و ذخیره کنید موقع خوندن باز برعکس کنید موفق باشید
سلام
پشتیبانی از فارسی به این معنی نیست که یه DataType جدید اضافه کنن، به این معنی هست که امکان تبدیلش ( در نمایش ) رو به تاریخ ایرانی ارائه کنن.
الان شما با تابع Convert میتونی تاریخ به شکلهای مختلف ببینی، احتمالاً یه کدی هم اضافه میکنن که با اون کد بتونی تاریخ رو به شمسی تبدیل کنی. ( در T-Sql )
در حال حاضر تو #C شما میتونی تاریخ میلادی رو به تاریخ هجری قمری تبدیل کنی، البته با هجری قمری ایران سازگاری نداره اما برای کشورهای عربی قابل استفاده هست.
همین قابلیت برای هجری شمسی اضافه بشه کلاً مشکلات تبدیل تاریخ حل میشه به امید خدا.
اما در هر صورت تاریخ به صورت «تاریخ» ذخیره میشه و حالت عادی نمایش و ذخیره به صورت میلادی هست. ( حداقل تا اطلاع ثانوی )
موقع نمایش با یه تابع اون رو شمسی کنید ( برای Sql اخیراً یه تابع سریع و دقیق تو تالار T-Sql گذاشتم میتونید دریافتش کنید )
صبا صبوحی
سلام
من هم شرکتی رو میشناسنم که به دلایل خاص خودشون هنوز از Framework 1.1 استفاده میکنن.
این که شما میتونی تاریخ شمسی رو تبدیل به تاریخ میلادی کنی ( که کار پیچیدهای هم نیست ) دلیل نمیشه که کارت درست باشه.
تاریخ رو باید به صورت «تاریخ» ثبت کنی، نه رشته حرفی. شاید شما دوست داشته باشی که اعداد رو هم به صورت رشته نگهداری کنی
و هنگام استفاده تبدیلشون کنی. ( اصلاً هم غیر ممکن نیست و به راحتی جواب میده ) اما آیا این کار صحیح هست؟
صبا صبوحی
خیلی ممنون از پاسخ هاتون
ولی نگفتید چیکار کنم؟
سلام
شما همون تاریخ میلادی رو بازیابی کن، تو برنامه تبدیلش کن به شمسی. ( هنگام نمایش )
میتونی این کار رو در سطح کنترلها انجام بدی ( کنترل خودت رو از کنترل اصلی inherit کنی و . . . )
یا این که datasource رو که ایجاد کردی یه فیلد تاریخ شمسی بهش اضافه کنی و اونجا تبدیلش کنی.
اگه Wpf کار میکردی که خیلی سادهتر هم بود، کافی بود یه converter بنویسی و تمام.
صبا صبوحی
سوال من اینکه وقتی برج 2 شمسی 31روزه است ولی میلادی 28روز
برای ثبت وبازیابی تاریخ های 29.30.31 چگونه است؟؟؟
سلام
دوست عزیز، همونطور که دوستمون Mahmoud.Afrad نوشته، شما باید تاریخ ذخیره کنی. وقتی تاریخ ذخیره کردی دیگه میلادی و شمسی نداره.
برای ذخیرهی تاریخ باید اون رو به صورت میلادی بدی و موقع بازیابی هم به شکل میلادی تحویل بگیری. وقتی مایکروسافت تصمیم گرفت تاریخ شمسی رو پشتیبانی کنه
که با توجه به قولهای داده شده برای ویندوز 10 و رفع تحریمها احتمالاً به زودی شاهد این قضیه هم خواهیم بود. شما وقتی تاریخ رو به صورت «تاریخ» ثبت کنی
کار درست رو انجام دادی. الان باید یه متد برای تبدیل تاریخ داشته باشی. اما با پشتیبانی تاریخ شمسی توسط مایکروسافت، بدون تغییر تو دیتابیس، فقط متد تبدیل
تاریخ رو حذف میکنی و به راحتی با دیتابیس کار میکنی.
صبا صبوحی