PDA

View Full Version : سوال: جستجوی در چند Table و نمایش نتیجه در dataGridView



takgig
چهارشنبه 29 دی 1389, 16:51 عصر
با سلام خدمت همه
به رسم پست زنی افراد آماتور : من اصلاً تا حالا با c# کار نکردم :لبخند: اینو نوشتم که به سوالم اگر ... بود نخندین :افسرده:

من کد زیر رو برای جستجو در جدول Specifications و ستون DocumentStatus استفاده می کنم و در dataGridView4 نمایش می دهم .


dataGridView4.DataSource = db.Specifications.Where(c => c.DocumentStatus == cobQuestion1.Text).Select(c => c);
حال اگر بخواهم جستجو در چند جدول انجام بدهم و آنرا در dataGridView نمایش دهم چجوری می شه ؟
مثلاً می خواهم تمامی ستونهای جدول Personality که مقدار DocumentStatus جدول Specifications آنها برابر ... است را در dataGridView4 نمایش بدهم.(ضمناً noserial در جدول Specifications کلید اصلی و در جدول Personality کلید خارجی است )
به نظر شما این روش جستجو بهتر است یا استفاده از Stored Procedure برای جستجو.

amireto
چهارشنبه 29 دی 1389, 20:31 عصر
از join استفاده کن





var query = from p in db.table1
where p.VirtualCode == '10'
join
q in db.table2
on p.ID equals q.ID
select p;


در مورد سوال دوم هم به نظر من بسته به حجم کاریت داره

takgig
چهارشنبه 29 دی 1389, 22:17 عصر
مرسی amireto (http://barnamenevis.org/member.php?32894-amireto) جان
جواب نداد.
این Query هست که من در SQL میزنم و جواب می ده و حالا می خوام توی C# بذارمش :


select *
from Personality , Specifications
where (DocumentStatus='2') and (Specifications.noserial=Personality.noserial);

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

amireto
چهارشنبه 29 دی 1389, 22:50 عصر
[LEFT]
SqlConnection objConnection = new SqlConnection(
"server=localhost;database=pubs;" +
"user id=sa;password=");
SqlDataAdapter objDataAdapter = new SqlDataAdapter();
DataSet objDataSet = new DataSet();
// Set the SelectCommand properties...
objDataAdapter.SelectCommand = new SqlCommand();
objDataAdapter.SelectCommand.Connection =
objConnection;
objDataAdapter.SelectCommand.CommandText =
"SELECT au_lname, au_fname, title, price " +
"FROM authors " +
"JOIN titleauthor ON authors.au_id = " +
"titleauthor.au_id " ;
objDataAdapter.SelectCommand.CommandType =
CommandType.Text;
// Open the database connection...
objConnection.Open();
// Fill the DataSet object with data...
objDataAdapter.Fill(objDataSet, "authors");
// Close the database connection...
objConnection.Close();
grdAuthorTitles.AutoGenerateColumns = true;
grdAuthorTitles.DataSource = objDataSet;
grdAuthorTitles.DataMember = "authors";
// Clean up
objDataAdapter = null;
objConnection = null;

برگرفته از کتاب سید محمد هاشمیان
کد من با LinQ بود این هم با ADO
الیته باید ConnectionString رو درست کنی با توجه به databaset و همچنین query خودتو جایگزین command بکنی
البته توصیه میکنم کتاب آقای هاشمیان رو از بخش مقالات همین سایت دانلود کن و حداقل بخش دیتابیس شو مطالعه کن