مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

rasool65

عضویت از 1394/09/18

جلوگیری از تداخل بازه تاریخی

  • یکشنبه 6 آبان 1397
  • 18:38
تشکر میکنم

سلام ، من یک نرم افزار دارم طراحی میکنم که کاربر میتونه رزرو انجام بده ، بنابراین ما 4 تا تاریخ داریم دوتا  تاریخ ابتدا و انتها کاربر اول که ثب شده دوتا هم تاریخ ابتدا و انتها کاربر بعدی که میخواد سیستم برسی کنه اگر تداخل نداشت اجازه رزرو بده  ،  یک راه کوتاه اگه سراغ دارید ممنونم... 

پاسخ های این پرسش

تعداد پاسخ ها : 5 پاسخ
کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • یکشنبه 6 آبان 1397
  • 21:44

باید بررسی کنید در اون بازه نباشه 

راه کوتاه و بلند نداره نتیجه مهمه 

کاربر سایت

rasool65

عضویت از 1394/09/18

  • یکشنبه 6 آبان 1397
  • 22:16

خب میشه یه راه معرفی کنید ؟

چطوری بگم مثلأ توی بازه 1 تا بیست تیر رو بررسی کن ؟؟ در حالی که دوم تا پنجم رزرو شده ست؟

100 تا الگوریتم زدم باز نشده مغزم درد گرفته.. هرجا رو میگیرم یه جا دیگه در میره... کلی AND و OR زدم نتیجه نداد که پرسیدم

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • دوشنبه 7 آبان 1397
  • 08:40

باید کوئری بزنید و در where شرط رو بزارید 

گوئری که زدید را قرار دهید تا بررسی کنم 

کاربر سایت

rasool65

عضویت از 1394/09/18

  • دوشنبه 7 آبان 1397
  • 12:59

سلام ایمان عزیز ، والا راستش من LinQ کار نکردم که where بزنم و اینا.. روشم اینه که یه کوئری ارسال میکنم سمت دیتا بیس و یک لیستی از رکورد ها (جدول) رو میگیرم و داخل یک دیتا گرید ذخیره میکنم بعد گفتم تا زمانی که داری دونه دونه دیتا ها رو میخونی بیا تاریخ هر کدوم رو بگیر و با تاریخی که در رزرو جدید هست مقایسه کن (همینجا مشکله) اگر تداخل نداشت رزرو رو انجام بده در غیر این صورت بگو تاریخ تداخلداره واین داستانا..

حالا سر این شرط IF قاطی کردم... اول گفتم اگر تاریخ ابتدا و انتهای جدید بین ابتدا و انتهای اولی که ثبت شده بود خطا بگیره ، نشد 

مقادیر dtsStart , dtsEnd توسط کاربر برای ررو جدید انجام میشه و startDate , EndDate اونیه که از یکی از سطر های جدول دیتا گریده که از دیتا بیس میاد و حالا چطوری مقایسه کنم؟

 //  اگر تاریخ تداخل داشت، خطا بگیره  در غیر این صورت رزرو انجام شود
                                    if ((Convert.ToDateTime(dtsStart.Text) > Convert.ToDateTime(startDate))||(Convert.ToDateTime(dtsStart.Text) < Convert.ToDateTime(endDate))||
                                        (Convert.ToDateTime(dtsEnd.Text) > Convert.ToDateTime(startDate))||(Convert.ToDateTime(dtsEnd.Text) < Convert.ToDateTime(endDate)))
                                    {
                                        MessageBox.Show(string.Format("تخت مورد نظر از تاریخ {0} تا تاریخ {1} رزرو شده می باشد", Convert.ToDateTime(startDate).ToString("yyyy/MM/dd"), Convert.ToDateTime(endDate).ToString("yyyy/MM/dd")), "تداخل تاریخ رزرو", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, MessageBoxOptions.RightAlign);
                                    }

کاربر سایت

rasool65

عضویت از 1394/09/18

  • سه شنبه 8 آبان 1397
  • 20:50

درست شد .. ممنون

    if (((Convert.ToDateTime(dtsStart) < Convert.ToDateTime(endDate)) &&(Convert.ToDateTime(dtsStart) > Convert.ToDateTime(startDate)))||
               ((Convert.ToDateTime(dtsEnd) < Convert.ToDateTime(endDate)) &&(Convert.ToDateTime(dtsEnd) > Convert.ToDateTime(startDate)))||
               ((Convert.ToDateTime(dtsEnd) > Convert.ToDateTime(startDate)) &&(Convert.ToDateTime(dtsStart) < Convert.ToDateTime(startDate))))
            {
                return false;
            }

            return true;

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)