PDA

View Full Version : ترکیب دو جدول در یک گرید ویو



mary3541
پنج شنبه 07 خرداد 1388, 10:49 صبح
من یک جدول به نام Teacher با فیلدهای Teacher_IDو Name,Family , ... و جدول دیگه به نام TermTeacher با فیلدهای TermTeacher_IDو Term_ID_Fk و Teacher_ID_FK دارم. میخوام توی یک گرید ویو اطلاعات رو به این صورت نمایش بدم
TermTeacher_ID و Term_ID_FKوTeacher_ID_FKو Name و Family.
چجوری میتونم این کارو بکنم؟

zahra111
پنج شنبه 07 خرداد 1388, 12:56 عصر
یه سر به این تاپیک بزن:

http://barnamenevis.org/forum/showthread.php?t=160997&page=2

NewFoxStudent
پنج شنبه 07 خرداد 1388, 13:18 عصر
شما باید یه کوئری بزنی و اطلاعاتی رو که میخوای از این دو جدول بگیری و به DataTable منتقل کنی و بعد اون DataTable رو به Grid بایند کنی
کجای این روش مشکل داری
بفرما تا حل بشه

mary3541
پنج شنبه 07 خرداد 1388, 13:24 عصر
شما باید یه کوئری بزنی و اطلاعاتی رو که میخوای از این دو جدول بگیری و به DataTable منتقل کنی و بعد اون DataTable رو به Grid بایند کنی
کجای این روش مشکل داری
بفرما تا حل بشه

میشه یه مثال بزنید؟
هر کاری میکنم درست نمیشه

NewFoxStudent
پنج شنبه 07 خرداد 1388, 13:46 عصر
این کوئری مربوط به گرفتن اطلاعات مورد نظر
توی این کد فرض رو براین گرفتم که فیلد Teacher_ID از جدول Teacher با فیلد Teacher_ID_FK از جدول TermTeacher ارتباط دارند یعنی Teacher_ID توی جدول TermTeacher با نام Teacher_ID_FK به عنوان کلید خارجی هست



Select TT.TermTeacher_ID,TT.Term_ID_FK,TT.Teacher_ID_FK,T .Name,T.Family From TermTeacher TT
Inner Join Teacher T ON T.TeacherID = TT.Teacher_ID_FK


اگه برای ارتباط نتیجه این کد به Grid مشکل دارید بگید

mary3541
پنج شنبه 07 خرداد 1388, 15:03 عصر
من توی فرمم یه dgv به نام dgv1 دارم. که میخوام وقتی برنامم load میشه این dgv با اطلاعاتی که گفتم پر شه.
توی کدم قسمت load برنامه کد زیر رو نوشتم


DataTable dt = new DataTable();
dt = tteach.combine();
dgv1.DataSource = dt;

تابع کمباین رو هم درون کلاس TermTeacher قرار دادم که کد آن به این صورته


public DataTable combine()
{
DataTable dt = new DataTable();
string str = "select [TermTeacher.TermTeacher_ID],[TermTeacher.Term_ID_FK],[TermTeacher.Teacher_ID_FK],[Teacher.FirstNameFa],[Teacher.LastNameFa] From [TermTeacher] Inner Join [Teacher] ON [Teacher.Teacher_ID] = [TermTeacher.Teacher_ID_FK]" ;
dt = db.DoSelect(str);
return dt;
}


و تابع DOSelect هم که درون کلاس Dal هست کدش اینه


public DataTable DoSelect(string sql)
{
DataTable dt = new DataTable();
connect();
cmd.CommandText = sql;
da.Fill(dt);
con.Close();
return dt;
}


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

NewFoxStudent
پنج شنبه 07 خرداد 1388, 15:07 عصر
این خطا به خاطر اینه که احتمالا جدول TermTeacher وجود نداره و یا اسمش رو اشتباه تایپ کردید

NewFoxStudent
پنج شنبه 07 خرداد 1388, 15:13 عصر
نوع خطا SqlExeption هست و مطمئناً به خاطر عدم وجود جدولی با این نام
این دستورات رو توی QueryAnalizer اجرا کنید
حتما همین خطا رو دریافت میکنید
البته ممکنم هست که بانک اطلاعاتی مربوط به SqlConnection رو توی ConnectionString درست تنظیم نکرده باشید
برای آزمایش میتونید دستور زیر رو به ابتدای کوئری تون اضافه کنید
به جای DbName نام بانک اطلاعاتی تون رو قرار بدید



Use DbName

mary3541
پنج شنبه 07 خرداد 1388, 15:15 عصر
ممنون
الان برنامم اجرا میشه ولی توی dgv1 فقط اطلاعات جدول TermTeacher نمایش داده میشه

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