PDA

View Full Version : سوال: جستجوی ترکیبی



mmk1234
پنج شنبه 03 تیر 1389, 14:17 عصر
سلام
من یه صفحه ی جستجو برای مسئول دبیرخانه گذاشتم که 10 تا combobox با عناوین مختلف مثل طبقه بندی نامه ، ارجحیت، نوع و ... داره . میخوام نتیجه جستجو هم در datagridview نمایش داده بشه . اگر مسئول فقط یک عنوان را وارد کرد و دکمه جستجو را زد نتیجه نمایش یابد اگر دو یا سه یا بیشتر را وارد کرد بر اساس ترکیبی از آنها نمایش یابد.زبان c# و بانک هم sql است.
فقط خیلی ضروریه :گریه:
ممنون از توجه تان

american_iran2006
پنج شنبه 03 تیر 1389, 14:42 عصر
شما باید اول چک کنید ببینید که کدام گزینه ها را انتخاب کرده و بعد با دستور ها ی پشت

سره هم دستور select گزینه منتخبfrom جدول مورد نظر شرط مورد نظر=where

یه این روش برای هر 10 گزینه این کارو می تونید بکنبد

mmk1234
پنج شنبه 03 تیر 1389, 15:09 عصر
خیلی خیلی ممنون که جواب سوال منو دادید ولی مشکل اینجاست که این اولین پروژه ای که کار می کنم و تقریبا صفرم درست نفهمیدم باید چیکار کنم . یه کم بیشتر توضیح بدین ممنون می شم ، یعنی چندتا SELECT بذارم به تعداد combobox ها ؟ بعد چه طوری ترکیبی کار می کنه که بر اساس همه ی فیلدهایی که وارد شده اشتراک بگیره و جواب رو در datagrid نمایش بده؟ اگه سوالم مبتدیه عذر می خوام.

iman_me
پنج شنبه 03 تیر 1389, 22:50 عصر
واسه ترکیبی کار کردن باید از AND OR.... استفاده کنی
مانند
select *from tb_test where id=@id and name=@name or family=@family
یه چیزایی شبیه این بسته به کاری که می خوای انجام بدی

mohammad_2039
پنج شنبه 03 تیر 1389, 23:15 عصر
سلام
از این هم میتونی استفاده کنی :




if (comboBox1.Text.Length != 0 && comboBox2.Text.Length != 0 &&comboBox3.Text.Length != 0 )
{
string serch = string.Format(@" select * from tbl_test where name='{0}' and pass='{1}'and sum='{2}'", comboBox1.Text, comboBox2.Text, comboBox3.Text);
DataSet m_set = new DataSet();
SqlDataAdapter da = new SqlDataAdapter(serch,sqlConnection1);
da.Fill(m_set, "tbl_test");
dataGridView1.DataSource=m_set.Tables[0];

}

mmk1234
جمعه 04 تیر 1389, 16:29 عصر
ممنون از پاسخی که دادید:لبخندساده:
ولی این کد کاربر رو مجبور میکنه حتما همه ی قسمت ها رو پر کنه اگر هم از "یا" استفاده کنم بر اساس یه فیلد جستجو رو انجام میده . من میخوام کاربر هر کدام از فیلدهایی که مد نظرش هست رو بنویسه و جستجو کنه و نتیجه بر اساس اشتراک فیلدهای انتخابی انجام بشه.

اوبالیت به بو
جمعه 04 تیر 1389, 16:37 عصر
آقا اينجا رو:

http://barnamenevis.org/forum/showpost.php?p=954989&postcount=8

mahdi87_gh
جمعه 04 تیر 1389, 18:05 عصر
دوست عزیز به آدرس زیر برو و به پست 10 توجه کن جوابت میگیری
http://barnamenevis.org/forum/showthread.php?t=205073

mmk1234
جمعه 04 تیر 1389, 23:22 عصر
آقا مهدی ممنون از پاسختون ولی من درست متوجه نشدم اگر بخوام نتیجه رو در Datagridview نمایش بدم چطوری از این کد استفاده کنم ؟ یا بهتر بگم چه کدهای دیگری بهش اضافه کنم؟

Merila_Rad
شنبه 05 تیر 1389, 02:53 صبح
میتونی در دستور select به جای = از like استفاده کنی
اگه هم نمی خوای کد نویسی کنی میتونی از دیتاگرید janus استفاده کنی

mmk1234
شنبه 05 تیر 1389, 12:23 عصر
متاسفانه من هنوز نتونستم مشکلم رو حل کنم :ناراحت:
اگه کسی از دوستان نمونه ای در این زمینه بذاره ممنون می شم.

mahdi87_gh
شنبه 05 تیر 1389, 12:24 عصر
به روشی که گفتم شما میتونی شرط رو ایجاد کنی، حالا اگه قبلا همه رکوردها رو داخل یه dataview ریخته باشی، میتونی با دستور dv.RowFilter=condition; یکسری از رکوردها رو فیلتر کنی، یا اینکه یک sqlcommand بسازی و دستور select رو با این شرطی که ایجاد کردی اجرا کنی و به گرید بایند کنی

mohammad_2039
یک شنبه 06 تیر 1389, 08:28 صبح
ممنون از پاسخی که دادید:لبخندساده:
ولی این کد کاربر رو مجبور میکنه حتما همه ی قسمت ها رو پر کنه اگر هم از "یا" استفاده کنم بر اساس یه فیلد جستجو رو انجام میده . من میخوام کاربر هر کدام از فیلدهایی که مد نظرش هست رو بنویسه و جستجو کنه و نتیجه بر اساس اشتراک فیلدهای انتخابی انجام بشه.
من فکر میکنم راهی که داری اینه که برای همه حالات دستور if بنویسی ، بعد اون کد رو با توجه به کمبو های انتخاب شده تغییر بده . مثلا اگه 3 تا کمبو داری یا 1 پر شده یا 2 یا 3 یا 1و2 یا 1و3 یا 2و3 یعنی 6 تا if بنویس و خلاص.