مشکل جستجو وابسته به پر شدن textbox ها
سلام
من یه فرم دارم که 5 تا textbox و یک datagridview و یک دکمه جستجو داره
dataGridView متصل به یک دیتابیس است که 5 فیلد متناظر با 5 تا textbox داخل فرم داره
میخوام برنامه ای بنویسم که کاربر با پر کردن هر کدام از textbox ها جستجو در دیتابیس را انجام دهد.
مثلا اگر textbox1 تنها پر شد, تنها براساس textbox1 جستجو را انجام دهد
اگر textbox1 و textbox2 پر شدند, براساس textbox1 و textbox2 جستجو را انجام دهد
اگر textbox2 و textbox5 پر شدند, براساس textbox2 و textbox5 جستجو را انجام دهد
و ...
اولین راهی که خودم به ذهنم رسید استفاده از if و else های زیاد است( با توجه به وجود 5 تا textbox تعداد if ها برابر 5! یعنی 125 تا می شود) که این کار به هیچ وجه اصولی نمی باشد
دومین راه :
فکر میکنم بتوان با استفاده از query صحیح نیز این کار را انجام داد
مثلا :
SELECT *FROM table
WHERE column1 = ??
آیا راهی وجود دارد که بتوان در صورتی که textbox خالی بود در قسمت where چیزی شبیه * قرار داد تا آن را بی اثر کند و تمام ردیف ها را برگرداند؟(البته خودم می دونم که * درست نیست)
لطفا اگر کسی تا بحال این کار را انجام داده است و یا ایده ای دارید کمک نمایید
سپاس گذارم
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
سلام.می تونی بررسی کنی که اگر TextBox ای خالی بود در کد Sql در شرط مربوط به اون TextBox یک or 1=1 اضافه کنی.
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
سلام،یه ایده به ذهنم رسید که واست یه چیزی رو نوشتم( من هر 5 فیلد رو رشته ای در نظر گرفتم، شما بر حسب نیازت اصلاح کن)،همچنین برای اینکه کوئری نهایتا خالی نباشه یکی از شرطها رو اجباری کردم( میتونید یکی از فیلدهای جدولت رو که بی تاثیر هست و در همه رکوردها یکسان هست به جای شرط اجباری بزاری . کد رو تست کنید و نتیجه رو اعلام کنید.ممکنه یه روز به درد یه نفر دیگه هم بخوره.
موفق باشید.
string s = "select * from tblname where [filde yeksan] ='meghdare fild'";
if (textBox1.Text != "")
s += "'and username ='" + textBox1.Text.Trim();
if (textBox2.Text != "")
s += "' and family ='" + textBox2.Text.Trim();
if (textBox3.Text != "")
s += "' and phone ='" + textBox3.Text.Trim();
if (textBox4.Text != "")
s += "' and Address = '" + textBox4.Text.Trim();
if (textBox5.Text != "")
s += "' and city = '" + textBox5.Text.Trim();
s += "'";
SqlConnection con = new SqlConnection("Data Source=(local);Initial Catalog=KHODRO;Integrated Security=True");
SqlDataAdapter da = new SqlDataAdapter(s, con);
con.Open();
DataTable dt = new DataTable();
da.Fill(dt);
if (dt.Rows.Count != 0)
dataGridView1.DataSource = dt;
else
MessageBox.Show("هیچ رکوردی یافت نشد");
con.Close();
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
ممنون از راهنمایی شما
این روش درسته و جواب میده اما مشکل من اینه که در داده های فارسی جدول خالی برمیگرداند
مثلا این query با وجود داشتن نام "حامد" در ستون "donator" دیتابیس هیچ ردیفی را بر نمی گرداند
SELECT *
FROM Table
Where donator = 'حامد'
اما اگر "ali" که به صورت انگلیسی نوشته شده باشد را وارد کنم درست کار می کند
SELECT *
FROM Table
Where donator = 'ali'
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
سلام، برای داده های فارسی یه حرف N ( با حرف بزرگ ) قبل از رشته بذار یعنی اینطوری(اینطوری هم فارسی ها هم انگلیسی ها رو نشون میده):
"select * from table where donator = N'" + textBox1.Text + "'"
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
آقا محمد انصافا دمت گرم
مشکل ما رو حل کردی
خدا خیرت بده
اما یه سوال:
چرا با استفاده از N مشکل فارسی حل میشه؟
این روش برای محیط ویژوال استودیو استفاده میشه یا مخصوص تمام محیط هاست(و از اصول query نوشتنه) ؟
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
:متعجب:
این همه کد واسه یه کار به این سادگی
خوب یه تابع میزاشتی:لبخند:
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
نقل قول:
نوشته شده توسط
iman_me
:متعجب:
این همه کد واسه یه کار به این سادگی
خوب یه تابع میزاشتی:لبخند:
لطفا اگه میخواهید راهنمایی نمایید لطفا منظورتونو واضح بیان کنید
ممنونم
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
نقل قول:
نوشته شده توسط
hamedjonjon
چرا با استفاده از N مشکل فارسی حل میشه؟
این روش برای محیط ویژوال استودیو استفاده میشه یا مخصوص تمام محیط هاست(و از اصول query نوشتنه) ؟
در این مورد داخل سایت خیلی بحث شده، لطفا جستجو کنید.
نقل قول:
نوشته شده توسط
iman_me
:متعجب:
این همه کد واسه یه کار به این سادگی
خوب یه تابع میزاشتی:لبخند:
خوشحال میشم کد کمتر و بهینه تری رو ارائه بدید.
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
میشد انتخاب فیلد رو در داخل یک کمبو در اختیار کاربر میزاشتید و با یه دستور case مقدار valuemember رو با تو جه به selectedvalue تعیین میکردی و دستور select رو بصورت زیر تغییر میدادید
"select * from"+ combobox1.valuemember+"where donator = N'" + textBox1.Text + "'"
اگه متوجه نشدید بگید تا بشتر توضیح بدم
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
نقل قول:
نوشته شده توسط
sobijoon
میشد انتخاب فیلد رو در داخل یک کمبو در اختیار کاربر میزاشتید و با یه دستور case مقدار valuemember رو با تو جه به selectedvalue تعیین میکردی و دستور select رو بصورت زیر تغییر میدادید
"select * from"+ combobox1.valuemember+"where donator = N'" + textBox1.Text + "'"
اگه متوجه نشدید بگید تا بشتر توضیح بدم
اگر میخواستن بر اساس یک فیلد جستجو کنن حرف شما صحیح بود ولی دوستمون میخواستن که همزمان بتونن براساس چند فیلد جستجو داشته باشن.
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
بله.
میتونه از این روش هم استفاده کنه
private void textBox4_TextChanged(object sender, EventArgs e)
{
if (textBox4.Text != String.Empty)
dw.RowFilter = "ln like '%" + textBox4.Text.Trim() + "%'";
else
dw.RowFilter = "";
}
برای هر کدوم از تکس باکس ها
نقل قول: مشکل جستجو وابسته به پر شدن textbox ها
نقل قول:
نوشته شده توسط
sobijoon
بله.
میتونه از این روش هم استفاده کنه
private void textBox4_TextChanged(object sender, EventArgs e)
{
if (textBox4.Text != String.Empty)
dw.RowFilter = "ln like '%" + textBox4.Text.Trim() + "%'";
else
dw.RowFilter = "";
}
برای هر کدوم از تکس باکس ها
آقا dw اینجا چیه؟