PDA

View Full Version : مبتدی: مشکل در استفاده از دستور سرچ



hamidre13
دوشنبه 18 مرداد 1389, 23:05 عصر
سلام
من دستور سرچ رو به این شکل نوشتم ولی کار نمی کنه کس از دوستان می دونه مشکلش کجاست:

nmee = "name like +'%'+ @param +'%' ";
SqlCommand cmd = new SqlCommand("SELECT * FROM [main-cd-table]"+where+nmee, conn);
برنامه موقع اجرا به من میگه عبارت کنار like اشتباه هست در صورتی وقتی همین عبارت رو بجای متغیر می زارم به درستی کار می کنه!

behnam25214
دوشنبه 18 مرداد 1389, 23:18 عصر
سلام
دوست عزیز باید کلمه where رو داخل جفت کتیشن بنویسی!:لبخندساده:

hamidre13
دوشنبه 18 مرداد 1389, 23:22 عصر
ببخشید من یک خط از کد رو یادم رفت بنویسم:

where = "where";
راستش من چند تا فیلد برای جست و جو دارم که می خوا برحسب فیلدی که برای جست و جو انتخاب شده عمل جست و جو را انجام بدم ممنون می شم اگر راهنمایی کنید؟

behnam25214
دوشنبه 18 مرداد 1389, 23:28 عصر
اگه کدهای جستجو ات رو بنویسی میشه حل کرد یا خطایی رو که میده رو بزار!:چشمک:

hamidre13
دوشنبه 18 مرداد 1389, 23:32 عصر
if (txtcdcode.Text.Length!=0||txtcdname.Text.Length!= 0||txtserial.Text.Length!=0||bcatagory||bproducter )
{
where = "where";
}
if (txtcdname.Text.Length!=0)
{
nmee = "name like '%'+@[param] +'%' ";
}
//generating grid view
conn = new SqlConnection();
conn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\programdatabank.mdf;Integrated Security=True;User Instance=True";
SqlCommand cmd = new SqlCommand("SELECT * FROM [main-cd-table]"+where+nmee, conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.SelectCommand.Parameters.AddWithValue("@param", typeof(string)).Value = txtcdname.Text;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();
این کل کد هستش.
این هم متن خطا:
Incorrect syntax near the keyword 'like'.
در ضمن شرط اول برای این هست که ببینم ایا کاربر فیلدی رو جهت جست و جو انتخاب کرده یا نه!
در ضمن از راهنماییتون خیلی متشکرم!

behnam25214
دوشنبه 18 مرداد 1389, 23:46 عصر
راستش گیج شدم.:گریه:

بهت یه پیشنهاد میدم کدهات رو به این روش بنویس.




String Ssql;
if (txtcdcode.Text.Length!=0||txtcdname.Text.Length!= 0||txtserial.Text.Length!=0||bcatagory||bproducter )
{
Ssql= " dastoret ro benevis";
}
if (txtcdname.Text.Length!=0)
{
Ssql= " dastoret ro benevis";
}
//generating grid view
conn = new SqlConnection();
conn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=" + Application.StartupPath + @"\programdatabank.mdf;Integrated Security=True;User Instance=True";
SqlCommand cmd = new SqlCommand(Ssql, conn);
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.SelectCommand.Parameters.AddWithValue("@param", typeof(string)).Value = txtcdname.Text;
DataTable dt = new DataTable();
da.Fill(dt);
dataGridView1.DataSource = dt;
conn.Close();

hamidre13
دوشنبه 18 مرداد 1389, 23:56 عصر
از راهنماییتون خیلی ممنون هستم ولی اگر بخوام چنین کاری کنم باید برای هرکدم از حالت های سرچم یه دستور بنویسیم ، خوب من پنج تا کنترل دارم یعنی باید دو به توان پنج حالت رو در نظر بگیرم و دستور بنویسم ، راستش خیلی زیاد می شه ! شما راه بهتر ی سراغ ندارید؟:خجالت:

behnam25214
سه شنبه 19 مرداد 1389, 00:03 صبح
بعد از where

where = "where ";یه فاصله بزار ببین درست میشه اگه نشه دیگه راهکاری به ذهنم نمیرسه.:چشمک:
ولی فکر کنم که باید کار کنه.

hamidre13
سه شنبه 19 مرداد 1389, 00:21 صبح
خیلی ممنونم مشکل حل شد انشاالله بتونم جبران کنم:تشویق: