PDA

View Full Version : سوال: وارد کردن داده در جداول مرتبط



zareei_ta
شنبه 20 آذر 1389, 09:16 صبح
سه تا جدول course,techer,lessonدارم که lessonId,teacherId در جدول course کلید خارجی هستند و از نوع identity حالا می خوام در جدول course این دو مقدار اضافه شوند.توی فرم دوتا comboboxگذاشتم که نام درس و معلم را انتخاب میکنه و id اون دوتا رو به جدول course اضافه کنه.این کد رو نوشتم ولی خطای کلید خارجی رومیده
]
cmd.CommandText = "select TeacherId from Teacher ;" +
"select LessonId from Lesson ;" +
"insert into Course(ClassNo,CourstTime,TeacherId,LessonId)value s(@ClassNo,@CourstTime,@TeacherId,@LessonId)";
cmd.Parameters.AddWithValue("@ClassNo",txtClassno.Text);
cmd.Parameters.AddWithValue("@CourstTime",txtClasstime.Text);
cmd.Parameters.AddWithValue("@LessonId", cmbLesson.SelectedText);
cmd.Parameters.AddWithValue("@TeacherId", cmbTeacher.SelectedText )

chasbonakam
شنبه 20 آذر 1389, 09:24 صبح
سلام
شما کلید خارجی رو از نوع identity گرفتی پس یعنی مقداری نمی تونی براش بفرستی و مقدار دهی به این فیلد ها رو بر عهده خود sql گذاشتی!!!

پیغام خطای کلید خارجی معمولا به این خاطر هست که تو جدول اصلی ، رکوردی که با رکورد در حال درج مطابقت داشته باشه ، پیدا نشده

شما اول باید معلم و درس رو درج کنی سپس به درج در جدول course بپردازی.
حواست باشه کد معلم و درسی که برای درج به جدول course می فرستی باید حتما تو جداول teacher و lesson وجود داشته باشه در غیر این صورت دوباره با همون خطای کلید خارجی مواجه می شی

zareei_ta
شنبه 20 آذر 1389, 09:30 صبح
ممنون .میشه با کد توضیح بدین

chasbonakam
شنبه 20 آذر 1389, 09:39 صبح
cmd.CommandText = "insert into Course(ClassNo,CourstTime,TeacherId,LessonId)value s(@ClassNo,@CourstTime,@TeacherId,@LessonId)";
cmd.Parameters.AddWithValue("@ClassNo",txtClassno.Text);
cmd.Parameters.AddWithValue("@CourstTime",txtClasstime.Text);
cmd.Parameters.AddWithValue("@LessonId", cmbLesson.SelectedText);
cmd.Parameters.AddWithValue("@TeacherId", cmbTeacher.SelectedText )


دستور insert رو همین جوری بنویس
مشکل شما تو مقادیری هست که به بانک می فرستی
در ضمن کلید های خارجی رو هم از حالت identity بر دار

zareei_ta
شنبه 20 آذر 1389, 10:18 صبح
مگه نباید اول teacherId. lessonIdاز جدول های مربوط به خودشون رو بدست اورد.از کجا بفهمه این نام استادی که در combobox انتخاب میشه idایش کدومه

zareei_ta
شنبه 20 آذر 1389, 11:46 صبح
شاید منطق کار من اشتباهه و باید کار دیگری کنم.میشه راهنمایی کنید

chasbonakam
شنبه 20 آذر 1389, 11:54 صبح
خب شما تو datamember کومبو باکست اسم استاد و تو valumember کد استاد رو بگذار

پس خیلی راحت به کداستاد دسترسی داری

همین کار رو برای lesson هم انجام بده

chasbonakam
شنبه 20 آذر 1389, 11:56 صبح
شاید منطق کار من اشتباهه و باید کار دیگری کنم.میشه راهنمایی کنید

برای اضهار نظر رو منطق ، شما باید دقیقا کاری که می خواهی انجام بدی رو شرح بدی تا بشه رو منطقت اظهار نظر کرد

zareei_ta
شنبه 20 آذر 1389, 14:45 عصر
برای بعضی مقادیر که ارسال میکنم خطامیده ولی برای بعضی دیگه درست کار می کنه.بازم ممنون که وقت گذاشتین