PDA

View Full Version : ایجاد جستجوی اتوماتیک



saber4166
شنبه 19 مهر 1393, 08:52 صبح
سلام دوستان چطور میشه جستجویی مثل توضیحات زیر داشته باشم

میخوام وقتی کاربر تاپ میکنه سلطان تبار هم کسایی که سلطانتبار هستن نشون بده و هم کسایی که سلطان تبار

درواقع فضای خالی رو هم در نظر بگیره و هم نگیره و تمامشون رو نشون بده؟؟؟

دلتنگ اسمان
شنبه 19 مهر 1393, 09:33 صبح
سلام
من خودم با این کد جستجو رو انجام میدم و درست جواب میده :

string query = "SELECT * from personal WHERE 1=1 ";
if (nametxt.Text != string.Empty)
query += "AND name=@name";

if (familytxt.Text != string.Empty)
query += " AND family=@family";

if (fadertxt.Text != string.Empty)
query += " AND fadername=@fadername";
SqlCommand.Parameters.AddWithValue("@name", nametxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@family", familytxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@fadername", fadertxt.Text.Trim());

مهرداد صفا
شنبه 19 مهر 1393, 09:44 صبح
سلام.
اگر منظورتون زبان sql هست که باید در تالار T-SQL مطرح می شد و با کدی شبیه به این به مقصد می رسید:

select * from table1 where name like N'FirstName%' and name like N'%lastName';
بدون در نظر گرفتن جا به جایی کلید واژه ها:

select * from table1 where name like '%FirstName%' and name like '%LastName%';

و اگر منظورتون linq و c# هست:


var q=DB.table1.Where(r=> r.Name.StartsWith("firstName") && r.Name.EndsWith("LastName"));

بدون در نظر گرفتن جا به جایی کلید واژه ها:


var q=DB.table1.Where(r=> r.Name.Contains("FirstName") && r.Name.Contains("lastName"));

saber4166
شنبه 19 مهر 1393, 10:31 صبح
سلام
من خودم با این کد جستجو رو انجام میدم و درست جواب میده :

string query = "SELECT * from personal WHERE 1=1 ";
if (nametxt.Text != string.Empty)
query += "AND name=@name";

if (familytxt.Text != string.Empty)
query += " AND family=@family";

if (fadertxt.Text != string.Empty)
query += " AND fadername=@fadername";
SqlCommand.Parameters.AddWithValue("@name", nametxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@family", familytxt.Text.Trim());
SqlCommand.Parameters.AddWithValue("@fadername", fadertxt.Text.Trim());



دوست عزیز این که یه جستجوی سادست !!!! :متفکر:

saber4166
شنبه 19 مهر 1393, 10:36 صبح
سلام.
اگر منظورتون زبان sql هست که باید در تالار T-SQL مطرح می شد و با کدی شبیه به این به مقصد می رسید:

select * from table1 where name like N'FirstName%' and name like N'%lastName';
بدون در نظر گرفتن جا به جایی کلید واژه ها:

select * from table1 where name like '%FirstName%' and name like '%LastName%';

و اگر منظورتون linq و C#‎‎‎‎‎‎‎ هست:


var q=DB.table1.Where(r=> r.Name.StartsWith("firstName") && r.Name.EndsWith("LastName"));

بدون در نظر گرفتن جا به جایی کلید واژه ها:


var q=DB.table1.Where(r=> r.Name.Contains("FirstName") && r.Name.Contains("lastName"));

منظورم در محیط C#‎‎‎‎‎‎ بوده که Query رو برای SQL ارسال میکنم
و این دستوری که شما گفتین
select * from table1 where name like '%FirstName%' and name like '%LastName%';

اگر تایپ کنم سلطان تبار هرشخصی که درش سلطان تبارباشه نشون میده مثلاً میرسلان تبار یا ...
اما من میخوام با زدن سلطان تبار هم سلطان تبار و هم سلطانتبار نشون داده بشه، و قبل و بعش هرچی بود مهم نیست مهم اینه که فضای خالی بین کلمه روو هم در نظر بگیره و هم در نظر نگیره
و فقط یک فیلد فامیلی رو میخوام ، نام و نام خانوادگی رو نمیخوام
یعنی اشتباهات تایپی که ممکنه کاربران داشته باشن برطرف بشه

plus
شنبه 19 مهر 1393, 10:49 صبح
میتونید برای جستجو فاصله ها رو (هم از مبدا هم از مقدار مورد جستجو) حذف کنید.

string lastNameToFind = txtLastName.Text.Replace(" ", String.Empty);
string query = "SELECT LastName FROM UsersTable WHERE REPLACE(LastName, ' ', '') = @LastNameToFind";
cmd.Parameters.Add("LastNameToFind", lastNameToFind);
// Execute command

البته برای پشتیبانی از Tab و... لازمه کد رو کاملتر کنید.

اسماعیل ابراهیمی
شنبه 19 مهر 1393, 12:44 عصر
جوری که شما می خوایین میشه ولی کد تمیزی نیست

شما می تونید در قسمت WHERE رشته پرس و جو ، بار رشته رو " با فاصله " و "بدون فاصله" OR کنید

موفق باشید