PDA

View Full Version : سوال: جستجو براساس بخشی از یک عبارت



veniz2008
شنبه 20 شهریور 1389, 09:04 صبح
سلام،من میخوام جستجو بر اساس بخشی از یک متن یا کلمه ای از یک عبارت رو برای پروژه ام بذارم مثل جستجویی که توی همین سایت برنامه نویس وجود داره و با وارد کردن یک کلمه همه عباراتی که شامل اون کلمه میشه رو پیدا و نمایش میده،ولی نمیدونم که باید از چه کد c# ای برای اینکار استفاده کنم.لطفا یه توضیح مناسب بدید یا اگه کسی کدش رو داره ممنون میشم که بذاره،تشکر.

sayan
شنبه 20 شهریور 1389, 09:23 صبح
سلام
این کد جستجو داخل دستور select ای که شما می نویسید هست.


مثلاْ



select * from moshtari where name like's%'


یعنی تمام فیلد های جدول user را به من نشان بده ولی به شرطی که فیلد name آنها اول با حرف s شروع شده باشد و بقیه اش هرچی که میخواد باشه.
پس علامت ٪ در عبارت شرط دستور select یعنی هرچیزی که شامل اون فیلد بود فیلتر کنه

veniz2008
شنبه 20 شهریور 1389, 12:01 عصر
سلام
این کد جستجو داخل دستور select ای که شما می نویسید هست.


مثلاْ



select * from moshtari where name like's%'

یعنی تمام فیلد های جدول user را به من نشان بده ولی به شرطی که فیلد name آنها اول با حرف s شروع شده باشد و بقیه اش هرچی که میخواد باشه.
پس علامت ٪ در عبارت شرط دستور select یعنی هرچیزی که شامل اون فیلد بود فیلتر کنه




از راهنماییتون ممنون،ولی من که نمیدونم که کاربر چه حرفی رو وارد میکنه تا براساس اون فیلترش کنم،من یه textbox گذاشتم تا کاربر براساس حرف(ها)دلخواهش عملیات جستجو رو انجام بده،من دنبال یک کد کلی و فراگیر میگردم،لطفا راهنمایی کنید.

AliRezaPro
شنبه 20 شهریور 1389, 13:37 عصر
از راهنماییتون ممنون،ولی من که نمیدونم که کاربر چه حرفی رو وارد میکنه تا براساس اون فیلترش کنم،من یه textbox گذاشتم تا کاربر براساس حرف(ها)دلخواهش عملیات جستجو رو انجام بده،من دنبال یک کد کلی و فراگیر میگردم،لطفا راهنمایی کنید.
خوب می خواهید بر اساس چه تیبلی جستجو رو انجام بده؟به جای name بالا اسم تیبل و تکست باکس خودتونو بگزارید
به مثال زیر توجه کنید

where FName=N'" + txtFname.Text

amir-yeketaz
شنبه 20 شهریور 1389, 14:02 عصر
برای اون کاری که شما میخواین بکنین یه رشته که دستور مورد نظر رو انجام بده بسازید ...
به این حالت مثلا:

string search = "Select TableName where ColumnName Like %" + textBox1.Text + "%";
با این کار هر متنی که تو اون تکست باکس وچود داره رو ازش میخونه بعد هر جا که چنین کلمه ای رو تو عبارت پیدا کرد اون ردیف از متنی که تو فیلدها هست انتخاب میشه (اینا رو دیگه احتمالا خودتون میدونید!!)

موفق باشید

Faezeh_IT
چهارشنبه 24 اسفند 1390, 19:35 عصر
سلام

برای اینکه مشکلم مشابه هست و در ادامه ی همین تاپیک و جواب هاش ، همینجا میپرسم که تاپیک تکراری ایجاد نشه.(امیدوارم ببینین و جواب بدین)

من این کاری رو که در جواب آخر هست انجام میدم ، به جای تکست باکس ، یه کمبو باکس توی شرط چک میشه. که برای اون جای textbox.Text
combobox.selecteditem.tostring() رو میذارم.
محتوی کمبوباکس فارسی هست، این کد رو که مینویسم در ابتدا اروری نمیده و اجرا میشه ، ولی کار نمیکنه برنامه و بعد از یک هنگ طولانی ارور میده.
و توی DataBAse.cs به con.Open اشاره میکنه برای ارور(وقتی محتویات کمبو باکس رو EN هم میکنم همین طوره)

میشه راهنمایی کنین؟

Pouyan2010
چهارشنبه 24 اسفند 1390, 20:14 عصر
ببینید این به درد میخوره

string tmp, sql;
DataTable dt = new DataTable();
try
{
if (comboBox1.Text == "")
{
errorProvider1.Clear();
errorProvider1.SetError(comboBox1, "لطفا مقداری برای جستجو وارد کنید");
return;
}
else
{
errorProvider1.Dispose();
}

switch (comboBox1.Text.ToString())
{
case "کد درس":
con.Open();
tmp = richTextBox1.Text.ToString();
sql = string.Empty;
sql = "select * from T_AllDros where (Code_Dars) like N'%" + tmp + "%'";
cmd.Connection = con;
cmd.CommandText = sql;
dt.Clear();
daa.SelectCommand = cmd;
daa.Fill(dt);
dataGridViewX1.DataSource = dt;
con.Close();
break;
}

بقیش رو خودت ادامه بده، البته درستش اینه که یه بار Con رو باز کنی بعدش فقط بهش دستور اسکیوالت رو بدی، در هر case این کار انجام میشه.
این کد در richTextBox1_TextChanged به عنوان نمونه نوشته میشه .

asadegha
پنج شنبه 25 اسفند 1390, 00:25 صبح
سلام

برای اینکه مشکلم مشابه هست و در ادامه ی همین تاپیک و جواب هاش ، همینجا میپرسم که تاپیک تکراری ایجاد نشه.(امیدوارم ببینین و جواب بدین)

من این کاری رو که در جواب آخر هست انجام میدم ، به جای تکست باکس ، یه کمبو باکس توی شرط چک میشه. که برای اون جای textbox.Text
combobox.selecteditem.tostring() رو میذارم.
محتوی کمبوباکس فارسی هست، این کد رو که مینویسم در ابتدا اروری نمیده و اجرا میشه ، ولی کار نمیکنه برنامه و بعد از یک هنگ طولانی ارور میده.
و توی DataBAse.cs به con.Open اشاره میکنه برای ارور(وقتی محتویات کمبو باکس رو EN هم میکنم همین طوره)

میشه راهنمایی کنین؟

مشکل شما با بانک اطلاعاتیه شماست. احتمالا بازه و نبستینش. از این شرط استفاده کن:
if(con.State!=ConnectionState.Open)
con.Open();