View Full Version : در مورد تاریخ شمسی در VB احتیاج به راهنمایی
jafaripur
دوشنبه 31 اردیبهشت 1386, 14:05 عصر
خوب دوستان یه سوال یعنی مشکل پیش اومده اونم اینه که :
چون دومین ماه تاریخ میلادی 28 و گاهی 29 روز هستش نمی توان 1385/02/30 را در متغییر Date گذاشت .
یعنی :
Dim A as Date
A = #1385/02/31#
و یا :
Dim A as Date
A = #1385/02/31#
A = A - 7
مثلاً به این هم خطا میده :
StrSql = "SELECT * FROM Member WHERE Date =#" & cvdate(txtdate.text) & "#"f
یعنی خطا میده Type MisMath میده . :عصبانی++:
چطوری می شه این مشکل را حل کرد .
Keramatifar
دوشنبه 31 اردیبهشت 1386, 14:26 عصر
دوست عزیز
باید تاریخ رو اگر می خواهی شمسی ذخیره کنی با استفاده از کلاس:
System.Globalization.PersianCalendar
تاریخ میلادی رو به شمسی تبدیل کنی
و اگر می خواهی شمسی رو بصورت میلادی ذخیره کنی با استفاده از کلاس:
System.Globalization.GregorianCalendar
تاریخ شمسی رو به میلادی تبدیل کن
h_sadeghynejad
دوشنبه 31 اردیبهشت 1386, 14:33 عصر
به نظر من بهتره که برای ذخیره تاریخ از نوع رشته ای استفاده کنی این طوری یه خورده راحت تری
اَرژنگ
دوشنبه 31 اردیبهشت 1386, 16:39 عصر
دوست عزیز
باید تاریخ رو اگر می خواهی شمسی ذخیره کنی با استفاده از کلاس:
System.Globalization.PersianCalendar
تاریخ میلادی رو به شمسی تبدیل کنی
و اگر می خواهی شمسی رو بصورت میلادی ذخیره کنی با استفاده از کلاس:
System.Globalization.GregorianCalendar
تاریخ شمسی رو به میلادی تبدیل کن
VB not VB.net
jafaripur
دوشنبه 31 اردیبهشت 1386, 23:39 عصر
کسی نبود عجله ای هستش ؟
h_sadeghynejad
دوشنبه 31 اردیبهشت 1386, 23:44 عصر
فکر کنم برای این کار باید تاریخ رو تبدیل به میلادی کنی و توی اون متغیر یا دیتابیس خودت بریزی و بعدا بازیابی کنی و دوباره اون رو تبدیل به شمسی کنی
jafaripur
دوشنبه 31 اردیبهشت 1386, 23:46 عصر
نمیشه ؟
می خوام ما بین دو تاریخ : 1386/02/31 و 1386/02/20 رو از پایگاه داده استخراج کنم ولی چون تو تاریخ میلادی دومین ماه که فوریه می شه 28 و 29 روز هستش 2/21 را خطا می گیره ؟
h_sadeghynejad
دوشنبه 31 اردیبهشت 1386, 23:47 عصر
این هم یه shamsi.dll که یه سری توابع کامل برای کار با تاریخ داره
8575
اگه مشکل با هاش داشتی بگو
h_sadeghynejad
دوشنبه 31 اردیبهشت 1386, 23:51 عصر
در کل به نظر من اگه بیای و تاریخ رو به صورت رشته ای و بدون اسلش (/) ذخیره کنی بهتره و بعدش هم برای چک کردن فاصله دو تا تاریخ راحت تر هستی
jafaripur
دوشنبه 31 اردیبهشت 1386, 23:53 عصر
مشکل نیست من فقط می خوام برا این مشکل راه حل بشه .
نه عزیز منظور تبدیل میلادی به شمسی نیست .
مشکل قرار دادن 1386/02/31 در متغییر Date هستش .
CodeMasterX
سه شنبه 01 خرداد 1386, 00:45 صبح
شما نمیتونی تاریخی که روز 31 داره رو تو تاریخ Date بریزی چون بصورت میلادی مدیریت خواهد شد.اولا سعی کن تواریخ رو بصورت رشته ای ذخیره کنی و باهاشون کارکنی.دوم اینکه نیازی نیست برای محاسبات حتما بریزیشون توی متغیر های Date.
برای استفاده از تواریخ شمسی هم میتونی از کدهایی که توی بخش "مشکلات فارسی و ..." گذاشته شده استفاده کنی و یا کنترل Payam.Calendar که آقای پیام مرادی لطف کردن و تو سایت گذاشتن.
h_sadeghynejad
سه شنبه 01 خرداد 1386, 11:35 صبح
من هم همینطوری فکر میکردم چون متغیر از نوع date مقادیرش این طوری تعریف شده و نمیتونی خارج از اون بهش داده بدی
Mbt925
سه شنبه 01 خرداد 1386, 14:26 عصر
یه راه هست
اونم اینکه حداکثر روزی که توی متغییر از نوع Date ذخیره می کنیم 28 باشه و اختلاف روز واقعی تا 28 رو کنارش ذخیره کنیم ، مثلا :
Type TNewDate
MainDate as Date
Diff as Integer
End Type
که توی این ساختار تاریخ در متغیر MainDate ذخیره میشه و اگه روزش بیشتر از 28 بود ، اضافیش توی متغیر Diff.
البته راهی که گفته شد برای وقتیه که نخواین از راه هایی که دوستان گفتن استفاده کنین.
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.