چگونگی بررسی چند شرط برای درج داده در دیتابیس - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

چگونگی بررسی چند شرط برای درج داده در دیتابیس

+1 امتیاز

سلام دوستان و اساتید.
من یک جدول دارم شام: نام، شماره دانشجویی، کلاس، زمانو تاریخ

من در حالت عادی با if exists مشخص می کردم که ایا در جدول داده وجود داره یا نه.
اما الان می خوام بررسی کنم که آیا به عنوان مثال1- این دانش آموز در این یک ساعت نتواند 2 کلاس بردارد.
2- یا مثلا یک کلاس در 1 ساعت و یک تاریخ نتواند 2 بار رزرو شود.
و از این جور مثال ها که باید 2 تا فیلد ور با هم ادقام کرد و شرط رو بررسی کرد.

من هم باید دانش آموز رو بررسی کنم و ساعت کلاس در یک شرط ، در طرف دیگه باید کلاس رو بررسی کنم و ساعت و تاریخ تا یک کلاس در یک ساعت و تاریخ 2 بار رزرو نشه.
کل شرط من مثلا میشه خط بالا.

ممنون میشم راهنمایی کنین.

سوال شده فروردین 28, 1393  بوسیله ی rahgozar (امتیاز 224)   18 26 35
کسی نیست جواب بده؟

1 پاسخ

+3 امتیاز

سلام.

روی صحت طراحی جداول بحثی نمی کنم و فقط به جواب سوالتون می پردازم.

در حالت کلی وقتی می خواید همزمان چند شرط رو برقرار کنید باید از And استفاده کنید.

مثلا در همین مثال شما، یک دانش آموز نباید در یک ترم دروسش با هم تداخل ساعتی داشته باشند. یعنی همزمان باید روز هفته ، ساعت کلاس ها و شماره دانشجویی رو در کوئری وارد کنید. (و البته اگر قرار باشه در ترم های مختلف برای دانشجو درس ثبت بشه باید شماره ترم و سال تحصیلی رو هم در کوئری لحاظ کنید. یعنی در یک نمیسال تحصیلی مشخص، برای اون دانشجو، در اون روز، قبلا کلاسی ثبت نشده باشه).

در جدول شما اینطور میشه :

if (Exists(select * from TblName where StudentID = @stdid AND DayOfWeek = @day AND Time = @time))
{
-- دانشجو قبلا در این روز هفته  و در این ساعت، درسی رو اخذ کرده
}

موفق باشید.

پاسخ داده شده فروردین 29, 1393 بوسیله ی veniz2008 (امتیاز 2,083)   1 5 21
درسته این . اما منظور من بررسی چند حالتهو به عنوان مثال شما فقط شرط اول جدول بالا رو بررسی کردید. یعنی دانش آموز  و کلاس نگرفتن در یک ساعت مشخص.
حالا من می خوام در همین جدول و در همین پروسیجر حالت دیگه ای رو بررسی کنم که در این ترم ، یک کلاس در یک زمان و تاریخ یکسان 2 تا کلاس بطور همزمان براش برداشته نشه.

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

ممنون میشم راهنمایی کنید
می تونید با if و else if های پشت سر هم، شرط ها رو یکی یکی بیارید.یعنی مثل کد بالا و در ادامه اون if، شرط دوم رو با else if بیارید و مرتبا این else if ها رو تکرار کنید و  زمانیکه همه شرط ها رو قرار دادید در نهایت یک else قرار بدید که معنیش این باشه که هیچکدوم از شرط ها برقرار نبوده و دانشجو می تونه اون درس رو ثبت کنه :
() if
}
{
() else if
}
{
() else if
}
{
.
.
.
else
}
{
با این ساختار دقیقا می تونید متوجه بشید که کدوم یک از شرطها اتفاق افتاده و می تونید پیغام مناسب رو به کاربر نشون بدید.
ممنون. اما یک سوال دیگه اینکه  من قبلا با کدی که خدتون داده بودید کاری می کردم که معلوم میشد داده تکراریه یا نه یعنی کد زیر:

if (db.tbl_student.Any(o => o.Stud_Id == i ))
            {
                MessageBox.Show("شماره ملی تکراری است");
            }
حالا چطوری باید از متغییری تعریف کنم و در  سی شارپ پیام بدم؟ ممنون میشم مثال کوچیک بزنین.
...