سلام ، من یک نرم افزار دارم طراحی میکنم که کاربر میتونه رزرو انجام بده ، بنابراین ما 4 تا تاریخ داریم دوتا تاریخ ابتدا و انتها کاربر اول که ثب شده دوتا هم تاریخ ابتدا و انتها کاربر بعدی که میخواد سیستم برسی کنه اگر تداخل نداشت اجازه رزرو بده ، یک راه کوتاه اگه سراغ دارید ممنونم...
باید بررسی کنید در اون بازه نباشه
راه کوتاه و بلند نداره نتیجه مهمه
خب میشه یه راه معرفی کنید ؟
چطوری بگم مثلأ توی بازه 1 تا بیست تیر رو بررسی کن ؟؟ در حالی که دوم تا پنجم رزرو شده ست؟
100 تا الگوریتم زدم باز نشده مغزم درد گرفته.. هرجا رو میگیرم یه جا دیگه در میره... کلی AND و OR زدم نتیجه نداد که پرسیدم
باید کوئری بزنید و در where شرط رو بزارید
گوئری که زدید را قرار دهید تا بررسی کنم
سلام ایمان عزیز ، والا راستش من 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); }
درست شد .. ممنون
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;
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)