PDA

View Full Version : نمایش اطلاعات دو Table در یک DataGridView ...!



MSN_Issue
شنبه 02 مرداد 1389, 21:52 عصر
سلام به همه
دوستان من میخوام اطلاعات دو جدول رو تو یک دیتاگرید نمایش بدم ، اما نمی دونم چطوری ؟!
توی سایت هم سرچ زدم ، اما پیدا نکردم . خیلی فوریه ، ممنون میشم اگه کمکم کنید .

mmd2009
شنبه 02 مرداد 1389, 22:01 عصر
با سلام

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

توجه کن که من دوتا جدول T1 وT2 رو دارم تو بانک اول که معرفی کردم براش t1 رو بعدش تو حلقه t2 رو هم بهش دادم




string name_t="t1";
DataSet ds = new DataSet ();
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=dbase.mdb");
for (int i = 1; i <= 2; i++)
{

OleDbDataAdapter dba = new OleDbDataAdapter("select*from " + name_t, con);

dba.Fill(ds);
name_t="t2";
}
dataGridView1.DataSource = ds.Tables[0];

MSN_Issue
شنبه 02 مرداد 1389, 23:22 عصر
ولی فیلد DataGridview1.DataMember رو هم باید ست کنید !
من وقتی که میخواستم دیتاگرید رو از یک جدول پر کنم ، اسم اون جدول رو میذاشتم برای این فیلد ، اما الان که باید از دوتا جدول پر بشه نمی دونم این فیلد رو چی بذارم !!!
اگر هم این فیلد رو ست نکنم ، دیتا گرید پر نمیشه !!

حجتی نیا
شنبه 02 مرداد 1389, 23:28 عصر
سلام به همه
دوستان من میخوام اطلاعات دو جدول رو تو یک دیتاگرید نمایش بدم ، اما نمی دونم چطوری ؟!
توی سایت هم سرچ زدم ، اما پیدا نکردم . خیلی فوریه ، ممنون میشم اگه کمکم کنید .
من کوئریشو اینطوری در برنامم نوشتم..

select f1,f2,.. from table1 join table2 on table1.key=table2.key

MSN_Issue
شنبه 02 مرداد 1389, 23:34 عصر
میشه بگید این کوئری چکار میکنه ؟!!!
راستی اینم بگم که فیلد های این دو جدول (Table) کاملا یکسان هستند (برای درک بهتر تصور کنید یک جدول مربوط به جنسهای فروخته شده و یک جدول مربوط به جنسهای موجود هست) حالا من برای یک کاری نیاز دارم که رکورد های هر دو جدول رو توی یک دیتاگرید نشون بدم ... !

حجتی نیا
یک شنبه 03 مرداد 1389, 00:02 صبح
میشه بگید این کوئری چکار میکنه ؟!!!
راستی اینم بگم که فیلد های این دو جدول (Table) کاملا یکسان هستند (برای درک بهتر تصور کنید یک جدول مربوط به جنسهای فروخته شده و یک جدول مربوط به جنسهای موجود هست) حالا من برای یک کاری نیاز دارم که رکورد های هر دو جدول رو توی یک دیتاگرید نشون بدم ... !
واسه اینکه فیلدهای دوجدول که شبیه هم هستم رو از هم مشخص کنین=د از این استفاده کنید :

select t1.code as 'کد جنس', t1.name as 'جنس انبار',t1.num as 'تعداد',... , t2.name as 'جنس فروخته', t2. num as 'تعداد فروخته شده', .... from t1 join t2 on t1.code==t2.codeفیلد کد که کد جنس رو نشون میده و ارتباط دهنده دوجدوله.. فیلد نام و تعداد که هردو هم دارن و ما اونارو براساس یه اسم که در header گرید نشون داده میشه از هم مشخص کردیم..
نحوه پرکردن هم مثه روش معمولیه با دیتاست و دیتاادپتور..

DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter("کوئری",objconnect);
da.Fill(ds, "t1");
dataGridView1.DataSource=ds.tables["t1"];

MSN_Issue
یک شنبه 03 مرداد 1389, 00:12 صبح
ولی من هنوز جواب پست 3 رو نگرفتم !!! اون datamember رو چی بذارم (وقتی اون رو ست نمیکنم ، هیچی توی دیتا گرید لود نمیکنه !)
من اون قطعه کدم رو میذارم ، لطفا روی اون بحث کنید :


con = new OleDbConnection();
command = "select * from Customer ";

con.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=
Workshop.mdb;User ID=Admin;Password=;";

string command2 = command.Replace("Customer", "Delivered");

adapter = new OleDbDataAdapter(command, con);
con.Open();
adapter.Fill(dataset, "Customer");
adapter = new OleDbDataAdapter(command2, con);
adapter.Fill(dataset, "Delivered");
con.Close();

dgvTemp.DataSource = dataset;
dgvTemp.DataMember = ?
مشکل سر خط آخره !!!!
اگه بذارم Customer ، اطلاعات تیبل Customer رو میذاره توش .
اگه بذارم Delivered ، اطلاعات تیبل Delivered رو میذاره توش .
ولی من می خوام اطلاعات هر دو رو بذاره توی دیتا گرید !!!:گریه:

حجتی نیا
یک شنبه 03 مرداد 1389, 00:29 صبح
ولی من هنوز جواب پست 3 رو نگرفتمدوست عزیز وقتی کد زیر رو قرار بدی

datagridview.datasource=ds.tables["tablename"] لازم به ست کردن datamember نیست و این همو کارو انجام میده.. درضمن چون شما از دوتا کوئری استفاده میکنی برای همین هرکدوم از جداول روکه به datamember بدی، دیگری رو نشون نمیده اما اونی که من گذاشتم فقط یه کوئریه..
شما این کد رو اصلا تست کردی؟؟

میلاد قاضی پور
یک شنبه 03 مرداد 1389, 01:14 صبح
به جای کوئری سعی کنید از view استفاده کنید . من همین امروز تاپیکی در همین مورد زدم و جوابشم خودم پیدا کردم .
گرامی شما برای اینکه دو تیبل رو در یک گرید ویو نمایش بدید باید یک ویو از دو تیبل بسازید و از اون ویو به عنوان تیبل استفاده کنید. بسیار ساده هست. اول ویو رو با همون کدی که جناب حجتی نیا در اولین پستشون گفتن و یا در این تاپیک (http://barnamenevis.org/forum/showthread.php?t=235431)در بخش ایجاد ویو در منیجمنت استودیو ایجاد کنید و سپس با اون ویو مثل تیبل برخورد کنید . همون کدی که برای نشون دادن تیبل ها در گرید ویو مینوشتید برای همون ویو بنویسید .
به تاپیکی که آدرسشو گذاشتم حتما یه نگاهی بندازید .