PDA

View Full Version : سوال: بهترین روش شما برای ذخیره و نمایش تاریخ شمسی با سی شارپ در sql؟



mrhunter
یک شنبه 15 اردیبهشت 1398, 18:20 عصر
سلام دوستان خیلی جاها بحث های مختلف میبینم یا اصلا خودم درگیرش میشم که مثلا ی فرم ساده داریم تاریخ ثبت نام رو میخوایم بزنیم بر اساس این مثال بریم جلو.

میخوام بدونم بهترین روش ذخیره تاریخ شمسی و همچنین لود کردن اون چیه؟ مثال تاریخ 1398/02/15 قرار ذخیره بشه

میتونیم فیلد تیبل رو از نوع nvarchar بذاریم و با استفاده از کلاس PersianCalendar در سی شارپ اونو به بصورت رشته در دیتابیس ذخیره کنیم اما به قول بعضی از دوستان ذخیره تاریخ بصورت رشته اشتباه وقتی که نوع داده ای مربوطه وجود داره !!!!!!!! اگر زمانی لازم به محاسبه خاصی باشه امکانش نیست (مثلا من خواستم در یک برنامه اطلاعات مربوط به ماه جاری و هفته جاری و روز جاری رو نشون بدم اما در بخش هفته جاری به مشکل خوردم و همچنان هم مشکل دارم اگر کسی راه حلی داشت ممنون میشم بگه نوع داده از نوع رشته هست)

دوستانی میگن بهتر از datetime2 استفاده کرد مشکل ذخیره تاریخ فارسی نداره که در وبسایت های دیگر گزارشاتی دادن ک اون نوع در لود یا نمیدونم در سال کبیسه مشکل داره(حالا اگر دوستان تجربه اش رو دارن محبت کنن توضیح بدید)
دوستی به من گفتن از Culture استفاده کنم وقت نشده تست کنم و نمیدونم چطوری اگر کسی تجربه داره یا مشکلی در این نوع هم هست لطفا بگه
https://csharp.net-tutorials.com/working-with-culture-and-regions/the-cultureinfo-class/
من تا حالا تاریخ تولد ک محاسباتی داره رو انجام ندادم اما بازم شنیدم که اگر نوع رشته ای باشه گویا به مشکل میخوره در هنگام نمایش

خب نکات لازم :
1- فرض رو بر اساس ذخیره تاریخ به وسیله یک textbox یا masked بذارید نه استفاده از datepicker
2- سعی کنید یک متد کامل و آپدیت رو ارائه بدید بالاخره الان visual 2017 پایدار شده و sql 2017 (هرچند 2019 ) هم هست ولی خب زبان سی شارپ پیشرفت های زیادی کرده پس کد و کلاس های آپدیت معرفی کنید لطفا
3- حتما حتما تجربه خودتون از استفاده از کد ارائه شده رو بگید . ذکر باگ ها و... و از همه مهتر دلیل ، یک دلیل خوب برای استفاده از کد و نوع داده ای در sql رو مطرح کنید.
4 - درسته الان فریم ورک EF و همچنین WPFو.. جای ado.net و winform رو گرفته اما لطفا بر اساس winform و ado حدالامکان کد هارو ارائه بدید که عمومی تر باشه.

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

پیشاپیش از دوستان و اساتیدی که در تکمیل این تاپیک همکاری میکنن تشکر ویژه دارم:تشویق::لبخندساده:

davidrobert
یک شنبه 15 اردیبهشت 1398, 21:55 عصر
بابت تاریخ شمسی بهترین نوع Date هستش و برای زمان هم از Time استفاده کنید.
بنده EF اصلاع توسعه نمیکنم چون تو لود اطلاعات اگه تحت شبکه باشه و اطلاعات زیاد باشه زمان EF تو تبدیل تاریخ میلادی به شمسی خیلی زمانبر هستش.
و دوم بعضی تاریخ ها رو باز من توسعه نمیکنم توسط برنامه ذخیره بشه مثل تاریخ ثبت چون اگه تحت شبکه باشه و بعصی از کامپیوتر ها تاریخ شون توجه کنیم برای حداقل چند روز، هفته ، ماه و یا سال عقب هستش بخاطر همین تو تاریخ ثبت اطلاعات باعث میشه اطلاعات آسیب زیادی ببینه تو محاسبه یا گزارش گیری.
این سورس شما سر بزنید http://barnamenevis.org/showthread.php?554595-%D8%AF%D9%81%D8%AA%D8%B1-%D8%AA%D9%84%D9%81%D9%86-%D8%A8%D8%A7-%D8%A7%D9%85%DA%A9%D8%A7%D9%86%D8%A7%D8%AA-%D8%A7%D8%A8%D8%B2%D8%A7%D8%B1%DB%8C-%D9%BE%DB%8C%D8%B4%D8%B1%D9%81%D8%AA%D9%87-%D9%88-%D9%87%D9%85%DA%86%D9%86%DB%8C%D9%86-%D8%A7%D9%85%DA%A9%D8%A7%D9%86-%D8%A7%D8%B1%D8%B3%D8%A7%D9%84-%D9%BE%DB%8C%D8%A7%D9%85%DA%A9-%D9%88-%DA%A9%D8%A7%D9%87%D8%B4-%D8%B4%D8%AF%DB%8C%D8%AF-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C
یه دفتر تلفن ساده هستش . ولی از کدنویسی خیلی حرفه ای ADO استفاده شده و مشکل تاریخ هم تو یک لینک بهش ارتباط دادم رفع کردم.
عمل تبدیل تاریخ روی سرور انجام میشه شمسی به میلادی روی سرور موقع ذخیره یا ویرایش و برعکس میلادی به شمسی موقع نمایش سرعتش خیلی بهتر از EF هستش تو شبکه. دوم علتی که میگم خوب نیست سر محاسبات و یا گزارش های خیلی قوی برحسب تاریخ حتی به صورت نمودار که اگه نوع فیلد رشته باشه که به کل نمیشه محاسبه انجام داد که این بلا سر بنده امد تا یک ماه گزارش مشتری ام کشید سر تاریخ چون باید از یک تاریخ فقط آمار مقدار عملیات نشان میدادم که روی میلادی امکانش بود نه شمسی ولی با عمل کدنویسی روی سرور مشکل حل شد و یک گزارش بدون مشکل لحظه ای درست کردم.
سومی موضوع اگه ویندوز شما 10 باشه و تاریخ شما شمسی باشه و اسکیول شما 2017 و نوع فیلد قرار بدید Date و تاریخ امروز بدید 25/02/1398 درست تبدیل میکنه به میلادی یعنی 600 سال تاریخ میبره جلو وقتی تاریخ مستقیم بدون هیچ تبدیل چی از برنامه یا مستقیم به فیلد بدید میزون600 سال میبره جلو یا اگه به میلادی 2019-01-01 بدید درست فکر میکنه این تاریخ شمسی به سال 2569-01-01 میبره یعنی 600 سال باز میبره جلو و کل اطلاعات خراب میشه. تو محاسبه و تاریخ به همین خاطر با این مشکل برنخورم یک Functions گیر آوردم تا سال 1280 رو بدون هیچ مشکلی دقیق محاسبه میکنه و توسط ویژوال با Culture انجام بدید سرعت تبدیل زیاد میشه برای نمایش و از Functions استفاده کنی سرعت بهتر هستش داخل این سورس استفاده همه دستورات هستش و حتی بیشتر عملیات محاسبه تاریخ روی سرور انجام میشه برای زمان حال بدون مشکلی و با دقت بالا و دوم تاریخ جاری برای تاریخ ثبت به صورت میلادی از سرور انجام میشه اگه تاریخ سیستم مشتری اشتباه بود موقع نمایش یا گزارش گیری از سیستم مشتری بدون مشکل به تاریخ جاری گزارش میده و مشکل رفع میشه. چون تاریخ بررسی از سرور نه سیستم که خطا بیشتر بشه.

asiatec
دوشنبه 16 اردیبهشت 1398, 06:46 صبح
استاندارد اینه که تاریخ به میلادی ذخیره بشه در دیتابیس و تو سی شارپ از Culture استفاده کنید,البته در صورتی که ویندوز 10 یا سرور 2016 داشته باشین.
EF در نهایت به ADO تبدیل میشه من نمیدونم شما چرا این دو تا رو جدا می دونید به نظر من هیچ استانداردی وجود نداره و برنامه نویس خودش باید تشخیص بده مستقیم از ado استفاده کنه یا Orm

davidrobert
دوشنبه 16 اردیبهشت 1398, 09:34 صبح
بله EF تبدیل میشه به ADO سمت سرور ولی از لحاظ سرعت کند هستش و همه جور EF تست گرفتم بدرد خیلی کارها نمیخوره و EF در حد دفتر تلفن و پروژه های کوچک میبینم میشه ازش استفاده کرد نه بزرگ. ولی دوستانی هستن از EF در پروژه های بزرگ استفاده میکنن و میگن کمی کند شده ولی روز به روز که اطلاعات بیشتر بشه کندی اش بیشتر میشه. سر لودش اطلاعات زیاد ضربه زیادی خوردم تو EF بخاطر همین توسعه نمیکنم تو کارهای بزرگ یا تحت شبکه استفاده بشه.

محمد آشتیانی
دوشنبه 16 اردیبهشت 1398, 10:05 صبح
بله EF تبدیل میشه به ADO سمت سرور ولی از لحاظ سرعت کند هستش و همه جور EF تست گرفتم بدرد خیلی کارها نمیخوره و EF در حد دفتر تلفن و پروژه های کوچک میبینم میشه ازش استفاده کرد نه بزرگ. ولی دوستانی هستن از EF در پروژه های بزرگ استفاده میکنن و میگن کمی کند شده ولی روز به روز که اطلاعات بیشتر بشه کندی اش بیشتر میشه. سر لودش اطلاعات زیاد ضربه زیادی خوردم تو EF بخاطر همین توسعه نمیکنم تو کارهای بزرگ یا تحت شبکه استفاده بشه.

سلام
اینکه شما به هر دلیلی تجربه خوبی از EF ندارید (دلیل میتونه عدم شناخت و تسلط کافی باشه مثلا) ، برای زیر سوال بردن این تکنولوژی نمیتونه کافی باشه. اینکه شما قابلیت های EF رو در حد پروژه دفترچه تلفن می بینید هم ، بیشتر شبیه شوخیه تا بحث جدی.
اتفاقا EF ، مزیت ها و قابلیت های خودش رو موقع کار در پروژه های بزرگ به خوبی نشون میده.


برسیم به موضوع تاپیک
شما کافیست تاریخ ها رو به صورت میلادی ذخیره کنید (صرفا هنگام نمایش باید تبدیل کنید به شمسی و بالعکس موقع ذخیره) البته این تبدیل هم میتونه توسط شما انجام نشه و از کنترل های DateTimePicker شمسی استفاده کنید که این کار رو خودشون انجام میدن. نمیدونم اصرار بر استفاده از textBox یا Masked برای چیست ، به هر حال بهتره از راه حل های استاندارد استفاده کنید
این کنترل نمونه بسیار خوبیه از نظر بنده http://barnamenevis.org/showthread.php?483739-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%88-%D8%B2%D9%85%D8%A7%D9%86-%D8%A8%D8%A7-%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86%DB%8C-%D8%A7%D8%B2-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D9%88-%D9%85%DB%8C%D9%84%D8%A7%D8%AF%DB%8C-open-source&highlight=date

در مورد datetime2 هم کاملا اشتباه می کنید ، این تایپ چون قابلیت این رو داره که از سال -یک- (0001-01-01) در خودش نگه داره ، پس بعضی توسعه دهنده ها فکر میکنند میشه مقادیر شمسی (مثلا 1398) داخلش ذخیره کرد ، در حالی که اشتباه هست ، چون به هر صورت اون تایپ مبنای محاسبات تاریخش ، تقویم میلادی هست و ماه ها و تعداد روزهاشون و همه محاسبات دیگرش ، بر مبنای تقویم میلادی هست ، بنابراین ، هیچوقت یک تاریخ شمسی رو در یک فیلد از نوع dateTime در دیتابیس ذخیره نکنید.

davidrobert
دوشنبه 16 اردیبهشت 1398, 16:08 عصر
سلام به دوست عزیز آقای محمد آشتیانی (http://barnamenevis.org/member.php?12815-محمد-آشتیانی) عزیز اول بگم بنده قصد جسارتی راجب این تکنولوژی ندارم. و به دو علت بنده EF ضعیف میدانم یک بابت سرعت لود و دوم هم باز سرعت لود هستش که اگه یک سیستم ضعیف باشه و تحت شبکه باشه آیا باز EF روی سیستم ضعیف میتونه اطلاعاتی زیادی رو لود کنه یا نه.
چون برای من هیچ وقت سیستم قوی مشتری ملاک نبوده چون وقتی با مشتری ام حرف میزنم میگه سیستم من ضعیف هستش منم میگم مشکلی نیست میگم اگه محل اطلاعات شما نصب بشه منظور همون اسکیول سرور هستش به مشتری میگم وقتی اسکیول سرور نصب شد مشکلی نیست من روی سیستم ضعیف شما برنامه رو میارم بالا با سرعت که راضی هستید و اگه خیلی بزرگ شد بعدا پول داشتید ارتقا بدید تا راحت تر باشید .
چون هدف من این نیست مشتری های که میگیرم سیستم قوی باشن چون روی سیستم قوی ها مشکلی ندارم و مشکل اصلی بنده سیستم ضعیف ها هستش آیا میتونه EF سریع ده تا عملیات که کمترین عملیات برای من هستش وقتی روی دکمه ذخیره میزنم انجام بده یا نه. یعنی من چند تا ذخیره و ویرایش انجام میدم و لازم باشه فراخونی برای نمایش انجام میدم آیا EF تو یک ثانیه یا کمتر میتونه همه شون روی سیستم ضعیف انجام بده من تست گرفتم نمیتونه و سیستم هنگ میکنه و یا انقدر میکشه بیاد بالا که خسته میشم.
بخاطر این موارد دیدم ازش خداحافظی کردم و هر بار سعی کردم بیام سمتش سر سرعت لودش ازش شاکی میشدم چون سیستم خودم متوسط هستش نه قوی و نه ضعیف

mrhunter
دوشنبه 16 اردیبهشت 1398, 20:17 عصر
در رابطه با پست های دوست عزیز davidrobert (http://barnamenevis.org/member.php?251829-davidrobert) بنده نمیدونم دوستان دقیقا چه نوع گزارش گیری رو میگن که روی تاریخی که بصورت nvarchar ذخیره شده باشه به مشکل میخورن؟چون بنده تا حالا برام پیش نیومده و جای سوال داره برام در چه مواقعی هست دقیقا.!!!!!!!! درمورد سورسی هم که لینک دادید کمال تشکر رو دارم حتما بررسی و استفاده میکنم من برنامه نویسی شبکه انجام ندادم و از کند بودن entity اونجا اطلاع ندارم. اما طبق استفاده البته نه خیلی زیاد و با تجربه بالا ولی چندباری که کار کردم مشکل لود نداشتم البته داشتم ها بعدا متوجه شدم نحوه کد زدنم برای لود دیتا مثلا توی گرید اشتباه بود بهرحال تجربه شما و سایر دوستان بالاتر و ما هم دوست داریم از این تجربه استفاده کنیم

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

بنده خودم خیلی اوقات فیلد دیتابیس رو رشته ای میذارم و تاریخ رو به این صورت
p.GetYear(DateTime.Now).ToString() + "/" + p.GetMonth(DateTime.Now).ToString("0#") + "/" + p.GetDayOfMonth(DateTime.Now).ToString("0#");

ذخیره میکنم موقع نمایش هم دگ دستور سلکت هرچیزی به هر شکلی ذخیره شده باشه همان رو لود میکنه و تبدیل و... لازم ندارم

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

mrhunter
دوشنبه 16 اردیبهشت 1398, 20:23 عصر
در رابطه با پست دوست عزیز asiatec (http://barnamenevis.org/member.php?358978-asiatec)
بنده ذکر هم کردم که Culture رو فقط شنیدم و استفاده نداشتم اما خب طبق تجربه و گفته شما ک روی سیستم عامل های جدید تر پاسخگو هست خب این مورد جالبی نیست
بالاخره ویندوز 7 و 8 هم هنوز در ایران زنده هستن :لبخند:
ایا این Culture روی سایر سیستم عامل ها که بصورت دیفالت تقویم شمسی رو ندارن چطور عمل میکنه؟
در این سایت نمونه کدی رو گذاشتن در این رابطه ایا همان چیزی هست که شما میگید؟
لینک سایت tosinso (https://programming.tosinso.com/tips/25304/%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-%D8%B3%DB%8C-%D8%B4%D8%A7%D8%B1%D9%BE)
و دیدم ک اینجا هم از همان کلاس پرشین استفاده کردن !!!

mrhunter
دوشنبه 16 اردیبهشت 1398, 21:19 عصر
سلام
اینکه شما به هر دلیلی تجربه خوبی از EF ندارید (دلیل میتونه عدم شناخت و تسلط کافی باشه مثلا) ، برای زیر سوال بردن این تکنولوژی نمیتونه کافی باشه. اینکه شما قابلیت های EF رو در حد پروژه دفترچه تلفن می بینید هم ، بیشتر شبیه شوخیه تا بحث جدی.
اتفاقا EF ، مزیت ها و قابلیت های خودش رو موقع کار در پروژه های بزرگ به خوبی نشون میده.


برسیم به موضوع تاپیک
شما کافیست تاریخ ها رو به صورت میلادی ذخیره کنید (صرفا هنگام نمایش باید تبدیل کنید به شمسی و بالعکس موقع ذخیره) البته این تبدیل هم میتونه توسط شما انجام نشه و از کنترل های DateTimePicker شمسی استفاده کنید که این کار رو خودشون انجام میدن. نمیدونم اصرار بر استفاده از textBox یا Masked برای چیست ، به هر حال بهتره از راه حل های استاندارد استفاده کنید
این کنترل نمونه بسیار خوبیه از نظر بنده http://barnamenevis.org/showthread.php?483739-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D9%88-%D8%B2%D9%85%D8%A7%D9%86-%D8%A8%D8%A7-%D9%BE%D8%B4%D8%AA%DB%8C%D8%A8%D8%A7%D9%86%DB%8C-%D8%A7%D8%B2-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D9%88-%D9%85%DB%8C%D9%84%D8%A7%D8%AF%DB%8C-open-source&highlight=date

در مورد datetime2 هم کاملا اشتباه می کنید ، این تایپ چون قابلیت این رو داره که از سال -یک- (0001-01-01) در خودش نگه داره ، پس بعضی توسعه دهنده ها فکر میکنند میشه مقادیر شمسی (مثلا 1398) داخلش ذخیره کرد ، در حالی که اشتباه هست ، چون به هر صورت اون تایپ مبنای محاسبات تاریخش ، تقویم میلادی هست و ماه ها و تعداد روزهاشون و همه محاسبات دیگرش ، بر مبنای تقویم میلادی هست ، بنابراین ، هیچوقت یک تاریخ شمسی رو در یک فیلد از نوع dateTime در دیتابیس ذخیره نکنید.

دلیل خاصی واقعا برای وارد کردن یک تاریخ بصورت دستی توسط تکس باکس وجود نداره ولی خب مهندس من چند datepicker رو تست کردم هرکدام باگ های خودشون رو داشتن و اذیت کننده این نمونه ای هم که شما معرفی کردید کامپونت واقعا خوبی نسبت به بقیه که بنده دیدم ، هست ولی مثلا انتخاب سال نداره و برای سال باید هی ماهارو جا به جا کرد مثلا طرف بخواد تاریخ تولد وارد کنه اخرش باید سال رو دستی بده و حالا دیگر مورد هایی ک در تاپکیشون مطرح شده.

و واقعا تشکر میکنم از لطف شما ک درمورد datetime2 بنده رو کامل آگاه کردید:تشویق:

همچنان منتظر نظرات و نمونه کد های دوستان و کامپونت های پیشنهادی هستیم

asiatec
سه شنبه 17 اردیبهشت 1398, 06:15 صبح
اگر سیستم عامل ویندوز 10 نباشه عملیات تبدیل انجام نمیشه،من روش های زیادی طی این سالها استفاده کردم مثلا:

استفاده از دیتاپیکر که خودش عملیات تبدیل و انجام میده
استفاده از فانکشن تو سی کول سرور
درج مستقیم تو دیتابیس(collation رو روی پرشین ست میکنی ولی با بعضی تاریخ ها مشکل داره مثل 31 شهریور)
استفاده از کلاس پرشین کلندر
یه جدول جدا برای تاریخ شمسی

این کد توسینو هم فقط به درد نمایش تایم میخوره در حد اینکه تاریخ امروز و نشون بدی با اسم روز و این حرفا...
به نظر من مهم ترین بخش وقتی هست که میخوای تاریخ در گرید نشون داذه بشه

davidrobert
سه شنبه 17 اردیبهشت 1398, 09:31 صبح
این فانکشن که داخل این لینک http://barnamenevis.org/showthread.php?554375-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-WinForm-Application&p=2411600&viewfull=1#post2411600 استفاده کردم مشکلی نداره داخل ویندوز 7 تا 10 تست شده بدون مشکل محاسبه تاریخ از سال 1280 تا آینده مطمئن باش انجام میده و اشتباه انجام نمیده اون آمار نموداری بود که بگه تو هر سال چه تعداد نفر بر حسب شرایط مختلف مردن به صورت دقیق از سال 1300 تا الان بهشون و حتی تا بعدا هم بهشون میده بدون هیچ اشتباه وبه صورت دقیق نمودار میکشه به حالت های مختلف و به کاربر میده.
این هم بگم محاسبه تاریخ انجام میده که محاسبه تاریخ بعد از ذخیره یا ویرایش دادم به اسکیول یعنی داخل برنامه سن طرف محاسبه نمیکنم داخل اسکیول سرور با یک دستور ساده و فقط روی همون ستون به وسیله Trigger روی همون که ذخیره و ویرایش شده سن متوفی رو حساب میکنم که چند سال عمر کرده و چی بلوغی داره

rahmatipoor
سه شنبه 17 اردیبهشت 1398, 13:45 عصر
سلام

من تاریخ رو به صورت رشته ذخیره می کنم
از دیت تایم پیکر آقای اسکندری استفاده می کنم که به نظرم بهترین نمونه فارسی همینه البته دو زبانه هست.
https://github.com/HEskandari/FarsiLibrary

پنج شش سال میشه که کار می کنم و روی سیستمهای زیادی هم برنامه ها رو اجرا کردم ( از ویندوز ایکس پی تا ویندوز 10 ) و هیچ مشکلی نداشتم. نه برای نمایش و یا سرچ و ... .

فقط یک مشکل کوچیک داره که گاهی اوقات به جای تقویم یه ضربدر بزرگ نمایش میده. بعد از کلی آزمون و خطا متوجه شدم که باید تنظیمات calender ویندوز روی میلادی باشه و مثلا اگه میلادی محلی باشه توی نمایش تاریخ با مشکل روبرو میشه

یه روش دیگه که دیدم جایی انجام میدادن اینه که نوع فیلد دیتابیس رو DateTime در نظر بگیرید و موقع نمایش و یا ذخیره اطلاعات، مقادیر تاریخ رو از میلادی به شمسی تبدیل کنید و بالعکس. همون روشی که آقای آشتیانی فرمودن

davidrobert
سه شنبه 17 اردیبهشت 1398, 16:41 عصر
در ضمینه بررسی و تبدیل تاریخ روی سرور خوبی این Function این هستش که نه به تاریخ سیستم اهمیت میده و نه چیزی یعنی اگه تاریخ سیستم شمسی باشه یا میلادی یا عربی درست این دستور همون کار خودش رو روی اسکیول سرور انجام میده http://barnamenevis.org/showthread.php?554375-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-WinForm-Application&p=2411600&viewfull=1#post2411600 روی همه شون هم تست شده سیستم عامل ها

mrhunter
سه شنبه 17 اردیبهشت 1398, 22:51 عصر
اگر سیستم عامل ویندوز 10 نباشه عملیات تبدیل انجام نمیشه،من روش های زیادی طی این سالها استفاده کردم مثلا:

استفاده از دیتاپیکر که خودش عملیات تبدیل و انجام میده
استفاده از فانکشن تو سی کول سرور
درج مستقیم تو دیتابیس(collation رو روی پرشین ست میکنی ولی با بعضی تاریخ ها مشکل داره مثل 31 شهریور)
استفاده از کلاس پرشین کلندر
یه جدول جدا برای تاریخ شمسی

این کد توسینو هم فقط به درد نمایش تایم میخوره در حد اینکه تاریخ امروز و نشون بدی با اسم روز و این حرفا...
به نظر من مهم ترین بخش وقتی هست که میخوای تاریخ در گرید نشون داذه بشه

سلام ممنون دوست عزیز بابت به اشتراک گذاشتن تجربه کاری خودتون.

من موقع نصبsql در تنظیمات collation روی persian میذارم و موقع ساخت دیتابیس هم دیفالت میذارم باشه.. نوع فیلد تاریخ هم همیشه nvarchar و از کلاس پرشین هم استفاده میکنم ولی با 31 مشکلی ندارم

ممنون میشم بگید در چه حالتی دقیقا مشکل ساز که بنده تست بزنم!!!!!!

درمورد گرید هم اگر تاریخ شمسی و رشته ای ذخیره شده باشه با دستور سلکت هرآنچه ذخیره میشه نمایش میده مگر اینکه میلادی ثبت شده باشه.... نمونه دیتاپیکر ک استفاده کردید رو میشه مطرح کنید با لینک یا سورس و هرچی

mrhunter
سه شنبه 17 اردیبهشت 1398, 22:55 عصر
سلام

من تاریخ رو به صورت رشته ذخیره می کنم
از دیت تایم پیکر آقای اسکندری استفاده می کنم که به نظرم بهترین نمونه فارسی همینه البته دو زبانه هست.
https://github.com/HEskandari/FarsiLibrary

پنج شش سال میشه که کار می کنم و روی سیستمهای زیادی هم برنامه ها رو اجرا کردم ( از ویندوز ایکس پی تا ویندوز 10 ) و هیچ مشکلی نداشتم. نه برای نمایش و یا سرچ و ... .

فقط یک مشکل کوچیک داره که گاهی اوقات به جای تقویم یه ضربدر بزرگ نمایش میده. بعد از کلی آزمون و خطا متوجه شدم که باید تنظیمات calender ویندوز روی میلادی باشه و مثلا اگه میلادی محلی باشه توی نمایش تاریخ با مشکل روبرو میشه

یه روش دیگه که دیدم جایی انجام میدادن اینه که نوع فیلد دیتابیس رو DateTime در نظر بگیرید و موقع نمایش و یا ذخیره اطلاعات، مقادیر تاریخ رو از میلادی به شمسی تبدیل کنید و بالعکس. همون روشی که آقای آشتیانی فرمودن

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

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

mrhunter
سه شنبه 17 اردیبهشت 1398, 23:19 عصر
در ضمینه بررسی و تبدیل تاریخ روی سرور خوبی این Function این هستش که نه به تاریخ سیستم اهمیت میده و نه چیزی یعنی اگه تاریخ سیستم شمسی باشه یا میلادی یا عربی درست این دستور همون کار خودش رو روی اسکیول سرور انجام میده http://barnamenevis.org/showthread.php?554375-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-WinForm-Application&p=2411600&viewfull=1#post2411600 روی همه شون هم تست شده سیستم عامل ها

تشکر ویژه دارم از شما که همچنان این تاپیک رو زنده نگه داشتین:تشویق:

از سایر دوستان و مهندس آشتیانی هم دعوت میکنم اگر روش دیگه ای یا تجربه یا نمونه کد و هرچیزی دارند در ادامه مباحث اضافه کنند تا یک تاپیک جامع برای کسایی که مشکلات و تجربه کم در بحث تاریخ شمسی و حواشی اون دارن باشه تا با پابلیک کردن لینکش یکبار برای همیشه مشکل برطرف بشه :لبخند:

aliwmhmdi
جمعه 10 خرداد 1398, 06:48 صبح
درود و خسته نباشید
دارم برنامه ای مینویسم تحت عنوان مدیریت یک هتل (به عنوان نمونه) در ویندوز فرم سی شارپ و پروسیجر ها و تیبل های اس کیو ال


تو فرم پذیرش مسافر جدید من برای قسمت شروع اقامت مسافر جدید ماسک تکست باکسی گذاشتم که فقط فرمت ####/##/## باید توش فیل بشه و در غیر این صورت به کاربر ارور میده که تاریخ رو اشتباه نوشته و درستش کنه پس یعنی ما اصلا تاریخ اشتباهی نداریم و همه تاریخ هامون کاملا صحیح توی دیتابیس ثبت میشن


برای مثال پذیرشی انجام میدیم از با شروع اقامت 1398/03/02 و اتاقی رو انتخاب میکنیم که کرایش روزی 1000 تومنه
در قسمت پذیرش شده های هتل، برای این کاربر اتمام پذیرش رو در 1398/03/09 میزنیم یعنی اون مسافر به مدت 7 روز توی هتل مونده و باید نرم افزار مبلغ 7000 تومن رو ازش بخواد....خب تا اینجای کار درسته و هیچ مشکلی نداریم یعنی تمام قسمت ها بدرستی انجام میشه


من تست کردم و دیدم برای مثال اگر تاریخ های 1398/02/31 یا 1398/02/29 یا 1398/02/30 رو وارد کنم و اتمام پذیرش رو بزنم کد برنامم ارور میده و میگه نوع تاریخ اشتباهه
-------------------------------------------------------------------------------------------
کد قسمت حساب کردن کرایه به این شکل هست:




PersianCalendar pc = new PersianCalendar();
string strDate = pc.GetYear(DateTime.Now).ToString("0000") + "/" + pc.GetMonth(DateTime.Today).ToString("00") + "/" + pc.GetDayOfMonth(DateTime.Now).ToString("00");


DateTime dt1;
DateTime dt2;


dt1 = Convert.ToDateTime(strDate);
dt2 = Convert.ToDateTime(txtBDate.Text);


int Distance = Convert.ToInt32((dt1 - dt2).TotalDays.ToString());


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


-----------------------------------------------------------------------------------------------------------------


که به درستی برای همه تاریخ ها کار میکنه به جز روز های 29 و 30 و 31 و خب طبیعتا در تاریخی مثل 1398/02/00 هم که باید ارور بده و طبیعیه اما دلیل ارور های روز های 29و30و31 رو نمیدونم
ممنون میشم کمکم کنید


-------------------------------------------------------------------------------------------------------------------


اروری که برای اون روز ها میده هم اینه:




{"String was not recognized as a valid DateTime."}

و این ارور رو روی این خط کد میده:


dt2 = Convert.ToDateTime(txtBDate.Text);



که تاریخ شروع اقامت مسافر هست


لطفا اگه کسی مشکل رو میدونه جواب بده

davidrobert
جمعه 10 خرداد 1398, 11:58 صبح
درود و خسته نباشید
دارم برنامه ای مینویسم تحت عنوان مدیریت یک هتل (به عنوان نمونه) در ویندوز فرم سی شارپ و پروسیجر ها و تیبل های اس کیو ال


تو فرم پذیرش مسافر جدید من برای قسمت شروع اقامت مسافر جدید ماسک تکست باکسی گذاشتم که فقط فرمت ####/##/## باید توش فیل بشه و در غیر این صورت به کاربر ارور میده که تاریخ رو اشتباه نوشته و درستش کنه پس یعنی ما اصلا تاریخ اشتباهی نداریم و همه تاریخ هامون کاملا صحیح توی دیتابیس ثبت میشن


برای مثال پذیرشی انجام میدیم از با شروع اقامت 1398/03/02 و اتاقی رو انتخاب میکنیم که کرایش روزی 1000 تومنه
در قسمت پذیرش شده های هتل، برای این کاربر اتمام پذیرش رو در 1398/03/09 میزنیم یعنی اون مسافر به مدت 7 روز توی هتل مونده و باید نرم افزار مبلغ 7000 تومن رو ازش بخواد....خب تا اینجای کار درسته و هیچ مشکلی نداریم یعنی تمام قسمت ها بدرستی انجام میشه


من تست کردم و دیدم برای مثال اگر تاریخ های 1398/02/31 یا 1398/02/29 یا 1398/02/30 رو وارد کنم و اتمام پذیرش رو بزنم کد برنامم ارور میده و میگه نوع تاریخ اشتباهه
-------------------------------------------------------------------------------------------
کد قسمت حساب کردن کرایه به این شکل هست:




PersianCalendar pc = new PersianCalendar();
string strDate = pc.GetYear(DateTime.Now).ToString("0000") + "/" + pc.GetMonth(DateTime.Today).ToString("00") + "/" + pc.GetDayOfMonth(DateTime.Now).ToString("00");


DateTime dt1;
DateTime dt2;


dt1 = Convert.ToDateTime(strDate);
dt2 = Convert.ToDateTime(txtBDate.Text);


int Distance = Convert.ToInt32((dt1 - dt2).TotalDays.ToString());


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


-----------------------------------------------------------------------------------------------------------------


که به درستی برای همه تاریخ ها کار میکنه به جز روز های 29 و 30 و 31 و خب طبیعتا در تاریخی مثل 1398/02/00 هم که باید ارور بده و طبیعیه اما دلیل ارور های روز های 29و30و31 رو نمیدونم
ممنون میشم کمکم کنید


-------------------------------------------------------------------------------------------------------------------


اروری که برای اون روز ها میده هم اینه:




{"String was not recognized as a valid DateTime."}

و این ارور رو روی این خط کد میده:


dt2 = Convert.ToDateTime(txtBDate.Text);



که تاریخ شروع اقامت مسافر هست


لطفا اگه کسی مشکل رو میدونه جواب بده

بابت این روش من یه حرکت پیاده کردم خوبم جواب میده تاریخ روی اسکیورل سرور نوع Date قرار دادم و تاریخ از سیستم به دیتابیس شمسی پاس میدم و داخل دیتابیس تاریخ میلادیی تبدیل میکنم.
و میدانم باز کاربرم تاریخ اشتباه میده و باعث خراب کاری و خطا میشه به همین خاطر قبل از ذخیره یک عملیات دیگه انجام دادم. یک Label مخفی معادل تاریخ شمسی برای میلادی قرار دادم.
وقتی کاربر تاریخ شمسی رو میده اگه تاریخ اش درست باشه میلادش اش قرار میدم داخل Label ولی اگه اشتباه بود یا خالی بود Label من خالی میشه و قبل از ذخیره بررسی میکنم آیا Label من خالی یا نه اگه خالی یا اشتباه بود به کاربر میگم تاریخ رو صحیح وارد کنید تا اون باشه تاریخ اشتباه به برنامه نده و همین هم شده و اول قبل بررسی همه چیز تاریخ رو تکید میکنم خالی نباشه و وقتی خالی نبود بار دوم تاکید میکنم که تاریخ داد ولی باز Label من خالی بود یعنی معادل شمسی که میلادی درون Label نبود تاریخ اشتباه پس تاریخ رو هم درست وارد کن دیدم مشکلی نیست اون موقع ثبت میکنم. بدون هیچ خطا و مشکلی

danialafshari
جمعه 10 خرداد 1398, 12:09 عصر
درود و خسته نباشید
دارم برنامه ای مینویسم تحت عنوان مدیریت یک هتل (به عنوان نمونه) در ویندوز فرم سی شارپ و پروسیجر ها و تیبل های اس کیو ال


تو فرم پذیرش مسافر جدید من برای قسمت شروع اقامت مسافر جدید ماسک تکست باکسی گذاشتم که فقط فرمت ####/##/## باید توش فیل بشه و در غیر این صورت به کاربر ارور میده که تاریخ رو اشتباه نوشته و درستش کنه پس یعنی ما اصلا تاریخ اشتباهی نداریم و همه تاریخ هامون کاملا صحیح توی دیتابیس ثبت میشن


برای مثال پذیرشی انجام میدیم از با شروع اقامت 1398/03/02 و اتاقی رو انتخاب میکنیم که کرایش روزی 1000 تومنه
در قسمت پذیرش شده های هتل، برای این کاربر اتمام پذیرش رو در 1398/03/09 میزنیم یعنی اون مسافر به مدت 7 روز توی هتل مونده و باید نرم افزار مبلغ 7000 تومن رو ازش بخواد....خب تا اینجای کار درسته و هیچ مشکلی نداریم یعنی تمام قسمت ها بدرستی انجام میشه


من تست کردم و دیدم برای مثال اگر تاریخ های 1398/02/31 یا 1398/02/29 یا 1398/02/30 رو وارد کنم و اتمام پذیرش رو بزنم کد برنامم ارور میده و میگه نوع تاریخ اشتباهه
-------------------------------------------------------------------------------------------
کد قسمت حساب کردن کرایه به این شکل هست:




PersianCalendar pc = new PersianCalendar();
string strDate = pc.GetYear(DateTime.Now).ToString("0000") + "/" + pc.GetMonth(DateTime.Today).ToString("00") + "/" + pc.GetDayOfMonth(DateTime.Now).ToString("00");


DateTime dt1;
DateTime dt2;


dt1 = Convert.ToDateTime(strDate);
dt2 = Convert.ToDateTime(txtBDate.Text);


int Distance = Convert.ToInt32((dt1 - dt2).TotalDays.ToString());


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


-----------------------------------------------------------------------------------------------------------------


که به درستی برای همه تاریخ ها کار میکنه به جز روز های 29 و 30 و 31 و خب طبیعتا در تاریخی مثل 1398/02/00 هم که باید ارور بده و طبیعیه اما دلیل ارور های روز های 29و30و31 رو نمیدونم
ممنون میشم کمکم کنید


-------------------------------------------------------------------------------------------------------------------


اروری که برای اون روز ها میده هم اینه:




{"String was not recognized as a valid DateTime."}

و این ارور رو روی این خط کد میده:


dt2 = Convert.ToDateTime(txtBDate.Text);



که تاریخ شروع اقامت مسافر هست


لطفا اگه کسی مشکل رو میدونه جواب بده

خطا میگه که ورودیتون صحیح نیست در txtBDate.Text
سعی کنید از کامپوننت یا Mask استفاده کنید و اعتبار سنجی کنید

string TestDate = "1398/02/05";
DateTime CDate;
DateTime.TryParse(TestDate,out CDate);

aliwmhmdi
جمعه 10 خرداد 1398, 17:43 عصر
خطا میگه که ورودیتون صحیح نیست در txtBDate.Text
سعی کنید از کامپوننت یا Mask استفاده کنید و اعتبار سنجی کنید

string TestDate = "1398/02/05";
DateTime CDate;
DateTime.TryParse(TestDate,out CDate);





عزیز من از ماسک استفاده کردم توضیح هم دادم که فقط برای روز های 29 و 30 و31 ارور دارم و ورودی ماسک رو برای اون روز ها ارور میگیره..اسم ماسک رو گزاشتم txtbdate ولی تکست باکس نیست اسمش رو خودم اونطوری گزاشتم

aliwmhmdi
جمعه 10 خرداد 1398, 17:48 عصر
بابت این روش من یه حرکت پیاده کردم خوبم جواب میده تاریخ روی اسکیورل سرور نوع Date قرار دادم و تاریخ از سیستم به دیتابیس شمسی پاس میدم و داخل دیتابیس تاریخ میلادیی تبدیل میکنم.
و میدانم باز کاربرم تاریخ اشتباه میده و باعث خراب کاری و خطا میشه به همین خاطر قبل از ذخیره یک عملیات دیگه انجام دادم. یک Label مخفی معادل تاریخ شمسی برای میلادی قرار دادم.
وقتی کاربر تاریخ شمسی رو میده اگه تاریخ اش درست باشه میلادش اش قرار میدم داخل Label ولی اگه اشتباه بود یا خالی بود Label من خالی میشه و قبل از ذخیره بررسی میکنم آیا Label من خالی یا نه اگه خالی یا اشتباه بود به کاربر میگم تاریخ رو صحیح وارد کنید تا اون باشه تاریخ اشتباه به برنامه نده و همین هم شده و اول قبل بررسی همه چیز تاریخ رو تکید میکنم خالی نباشه و وقتی خالی نبود بار دوم تاکید میکنم که تاریخ داد ولی باز Label من خالی بود یعنی معادل شمسی که میلادی درون Label نبود تاریخ اشتباه پس تاریخ رو هم درست وارد کن دیدم مشکلی نیست اون موقع ثبت میکنم. بدون هیچ خطا و مشکلی

اصلا نیازی به لیبل مخفی نیست ما میتونیم با ماسک بهش بگیم اگه فول نشد یا کمپلت نشد ارور بده روی ارور پرووایدر و در مورد بحث اشتباه تایپی تاریخ که اشتباه هم وارد کنه خب میشه چک کرد که آیا تاریخی که ثبت کرده اصلا درست هست یا نه
اما در مورد اون روزهای 29و30و31 ماه....با این روشی که شما گفتین ینی ذخیره در دیتابیس با فرمت date میلادی و نمایش اون با فرمت شمسی آیا امکان پذیره که توی گریدویو هم شمسی نمایش داده بشه؟
اگه سورس یا فانکشنی دارین یا کد(هرچی)
لطفا بگین چطوری میتونم اینکارو انجام بدم چون برام مهمه که کاربر در گریدویو تاریخ رو شمسی ببینه
ممنون:قلب:

davidrobert
جمعه 10 خرداد 1398, 21:34 عصر
اصلا نیازی به لیبل مخفی نیست ما میتونیم با ماسک بهش بگیم اگه فول نشد یا کمپلت نشد ارور بده روی ارور پرووایدر و در مورد بحث اشتباه تایپی تاریخ که اشتباه هم وارد کنه خب میشه چک کرد که آیا تاریخی که ثبت کرده اصلا درست هست یا نه
اما در مورد اون روزهای 29و30و31 ماه....با این روشی که شما گفتین ینی ذخیره در دیتابیس با فرمت date میلادی و نمایش اون با فرمت شمسی آیا امکان پذیره که توی گریدویو هم شمسی نمایش داده بشه؟
اگه سورس یا فانکشنی دارین یا کد(هرچی)
لطفا بگین چطوری میتونم اینکارو انجام بدم چون برام مهمه که کاربر در گریدویو تاریخ رو شمسی ببینه
ممنون:قلب:

بنده یک فانکشن خیلی قوی دارم اطلاعات تو سرور شمسی میکنم و بعد به کاربر نمایش میدم. و علت خطا بله با Try و غیره میشه جلو خطا گرفت ولی بنده دیگه از دستور Try استفاده نمیکنم و با حالت های مختلف بررسی جلو خطا میگیرم و سعی کردم به هیچ عنوان برنامه خطا نده و سمت Try نره بخاطر Sql Injection و فقط دو بار از دستور Try استفاده کردم اونم داخل Helper هستش چون کل دستورات بنده رو دو تا پرامتر به سمت دیتابیس بررسی میکنه و همون دوتا دستور کل برنامه من هندل میکنه. و خطا باز پیغام نمیدم و خطا داخل دیتابیس ذخیره میکنم و از دیتابیس خطاها رو میبینم چی هستش و مربطو به کجا هستش و همین طور کدام فرم و دستور هستش و وقتی پیدا کردم اون موقع رفع میکنم خطا و نشان نمیدم برنامه چه خطایی داره.

این مورد یادم رفت بگم مسک بنده آماده هستش یعنی کامپوننت اماده هستش ولی مثل اینکه MaskTestbox یه باگ داره یا من فقط با این باگ برخورد کردم وقتی تاریخ آماده بهش داده میشه بررسی روش انجام نمیشه ولی وقتی دستی بهش داده میشه بررسی روش انجام میشه و یا عددی بهش داده بشه بر حسب نوع استاندارد تاریخ باز با مشکل میخوره و امکان اصلاح نمیده با کامپوننت خود دانت به نوع مختلف تست کردم باگ داشت بخاطر همین معادلش رو میریزه داخل Label وقتی Label ایراد نگیره قبولش دارم و وقتی اون ایراد بگیره کاربر تاریخ پاک میکنه یک بار دیگه وارد میکنه تا Label معادل میلادی شمسی بگیره
این فانکش مورد نظری که من استفاده میکنم
http://barnamenevis.org/showthread.php?554375-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-WinForm-Application&p=2411600&viewfull=1#post2411600

aliwmhmdi
شنبه 11 خرداد 1398, 06:09 صبح
بنده یک فانکشن خیلی قوی دارم اطلاعات تو سرور شمسی میکنم و بعد به کاربر نمایش میدم. و علت خطا بله با Try و غیره میشه جلو خطا گرفت ولی بنده دیگه از دستور Try استفاده نمیکنم و با حالت های مختلف بررسی جلو خطا میگیرم و سعی کردم به هیچ عنوان برنامه خطا نده و سمت Try نره بخاطر Sql Injection و فقط دو بار از دستور Try استفاده کردم اونم داخل Helper هستش چون کل دستورات بنده رو دو تا پرامتر به سمت دیتابیس بررسی میکنه و همون دوتا دستور کل برنامه من هندل میکنه. و خطا باز پیغام نمیدم و خطا داخل دیتابیس ذخیره میکنم و از دیتابیس خطاها رو میبینم چی هستش و مربطو به کجا هستش و همین طور کدام فرم و دستور هستش و وقتی پیدا کردم اون موقع رفع میکنم خطا و نشان نمیدم برنامه چه خطایی داره.

این مورد یادم رفت بگم مسک بنده آماده هستش یعنی کامپوننت اماده هستش ولی مثل اینکه MaskTestbox یه باگ داره یا من فقط با این باگ برخورد کردم وقتی تاریخ آماده بهش داده میشه بررسی روش انجام نمیشه ولی وقتی دستی بهش داده میشه بررسی روش انجام میشه و یا عددی بهش داده بشه بر حسب نوع استاندارد تاریخ باز با مشکل میخوره و امکان اصلاح نمیده با کامپوننت خود دانت به نوع مختلف تست کردم باگ داشت بخاطر همین معادلش رو میریزه داخل Label وقتی Label ایراد نگیره قبولش دارم و وقتی اون ایراد بگیره کاربر تاریخ پاک میکنه یک بار دیگه وارد میکنه تا Label معادل میلادی شمسی بگیره
این فانکش مورد نظری که من استفاده میکنم
http://barnamenevis.org/showthread.php?554375-%D8%AA%D8%A7%D8%B1%DB%8C%D8%AE-%D8%B4%D9%85%D8%B3%DB%8C-%D8%AF%D8%B1-WinForm-Application&p=2411600&viewfull=1#post2411600

ممنون البته من هم از try استفاده نکردم و چک کردم تاریخ رو
از فانکشنتون استغاده میکنم و اگه مشکلی بود بهتون خبر میدم
انشالله حل شه❤️❤️

aliwmhmdi
شنبه 11 خرداد 1398, 12:57 عصر
بنده یک فانکشن...

داداش دمت گرم کار کرد ولی روی 31 اما یکم گیر داره

davidrobert
شنبه 11 خرداد 1398, 14:40 عصر
داداش دمت گرم کار کرد ولی روی 31 اما یکم گیر داره

فانکشن ها درست کار میکنن و الان 4 سال روی سیستم مشتری داره بدون مشکل کار میکنه حتی تو برج 2 و 3 و 4 تا حالا مشکلی نبود

aliwmhmdi
یک شنبه 12 خرداد 1398, 18:17 عصر
فانکشن ها درست کار میکنن و الان 4 سال روی سیستم مشتری داره بدون مشکل کار میکنه حتی تو برج 2 و 3 و 4 تا حالا مشکلی نبود
داداش من اینطوری نوشتم خیلیم اوکیه و خوب کار میکنه مشکلم حل شد...
150295

بدون استفاده از فانکشنی که نوشته بودی

mehrdad2569.mt
شنبه 27 اردیبهشت 1399, 23:41 عصر
باسلام خدمت دوستان من یه سوال داشتم میخوام تو سیشارپ تو تکس باک تاریخ مثلا 1399/05/02 نوشته شده بشه با یه دکمه ماه این تاریخ رو مشخص کنه میشه راهنمایی کنید ممنون