PDA

View Full Version : سوال: جستوجو در ديتابيس



meri_rad
یک شنبه 22 فروردین 1389, 21:19 عصر
سلام
يه سوال در رابطه با جستوجو تو ديتابيس داشتم
من يه فرم دارم كه نام ،نام خانوادگي،سابقه ي كاري،مدرك و... رو توش براي جستو جو وارد ميكنيم
ورود اطلاعات دلخواهه ، يعني اگه هيچ اطلاعاتي وارد نشه و دكمه ي سرچ زده شه كل اطلاعات موجود تو ديتابيس رو ميده ، اگه فقط نام وارد كنه مثلا نام = محمد،هركسي كه اسمش محمد ميده، اگه نام ونام خانوادگي وارد كنه مثلا نام =محمد و نام خانوادگي = محمدي هر كسي كه اسم وفاميلش محمد محمدي باشه ميده
يه روش واسه اين كار استفاده از if-elseif كه بهينه نيست و تعداد ifها زياد ميشه ،كسي مي تونه روشه ديگه اي پيشنهاد كنه

محمد سلیم آبادی
یک شنبه 22 فروردین 1389, 22:36 عصر
http://www.sommarskog.se/dyn-search-2005.html#introduction

سونیان
یک شنبه 22 فروردین 1389, 23:32 عصر
سلام یعنی کد مربوط به جستجو را میخواهید؟:متفکر:

meri_rad
دوشنبه 23 فروردین 1389, 09:02 صبح
http://www.sommarskog.se/dyn-search-2005.html#introduction
اگه ميشه يه منبع فارس معرفي كنيد (من sql رو در حد مبتدي بلدم )ممنون

meri_rad
دوشنبه 23 فروردین 1389, 09:09 صبح
سلام یعنی کد مربوط به جستجو را میخواهید؟:متفکر:
كد مربوط به جستوجو رو مي خوام تحت شرايطي كه اگه يه textbox بيشتر پر شد جستوجو محدود تر بشه

mohammad kafiyan
دوشنبه 23 فروردین 1389, 09:15 صبح
دوست عزیز اگر منظورت را فهمیده باشم ، برای این کار می تونی یک combobox در فرم اضافه کنی و collection
بر اساس فیلد های که میخواهی قرار بده سپس به تعداد فیلدهای که می خواهید جستجو کنی textbox قرار بده بعد با کد نویسی در combobox (به جای if - else از switch - case استفاده کن برا مثال اگر در combox کاربر نام را انتخاب کرد textbox مربوط به نام فعال بشه
سرچ را انجام بده
خوش باشی:لبخندساده::چشمک:

M.YasPro
دوشنبه 23 فروردین 1389, 09:17 صبح
سلام
در زمان ساختن query باید چک کنید : اگر TextBoxX پر بود بیاد به رشته دستور sql مثلا اضافه کنه:

strSql+=" and age="+txtAge.text;
موفق باشید .

meri_rad
چهارشنبه 25 فروردین 1389, 09:14 صبح
سلام
در زمان ساختن query باید چک کنید : اگر TextBoxX پر بود بیاد به رشته دستور sql مثلا اضافه کنه:

strSql+=" and age="+txtAge.text;
موفق باشید .
M.YasPro عزيز من اين كاررو كردم اما چون بعضي اوقات بعد از where , and مياد از برنامه خارج ميشه
اين كد دكمه سرچه


strqry = "select * from order1 where ";
if (txtport .Text !="")
strqry += "portage=@port ";
if (txtown.Text != "")
strqry += "and owner=@own ";
if (txttype.Text != "")
strqry += "and typeofbtmn=@type ";
if (txtsize.Text != "")
strqry += "and size=@size ";
if (txtordernum.Text != "")
strqry += "and order#=@order";
if (strqry == "select * from order1 where ")
strqry = "select * from order1";

SqlConnection con1 = new SqlConnection("Data Source=.\\SQLEXPRESS;AttachDbFilename='C:\\Documen ts and Settings\\Dear-User\\Desktop\\FEEDAR_C#\\FEEDAR\\FEEDAR\\Database .mdf';Integrated Security=True;User Instance=True");
ObjDataAdapter = new SqlDataAdapter(strqry, con1);
ObjDataAdapter.SelectCommand.Parameters.AddWithVal ue("@port", txtport.Text);
ObjDataAdapter.SelectCommand.Parameters.AddWithVal ue("@type", txttype.Text);
ObjDataAdapter.SelectCommand.Parameters.AddWithVal ue("@order", txtordernum.Text);
ObjDataAdapter.SelectCommand.Parameters.AddWithVal ue("@size", txtsize.Text);
ObjDataAdapter.SelectCommand.Parameters.AddWithVal ue("@own", txtown.Text);
con1.Open();
ObjDataAdapter.Fill(ObjDataSet, "order1");
con1.Close();
ObjDataAdapter = null;
con1 = null;
result_search search = new result_search();
search.input_controls = this;
search.ShowDialog();

M.YasPro
چهارشنبه 25 فروردین 1389, 09:26 صبح
M.YasPro عزيز من اين كاررو كردم اما چون بعضي اوقات بعد از where , and مياد از برنامه خارج ميشه

من منظورتونو متوجه نمیشم

meri_rad
چهارشنبه 25 فروردین 1389, 09:44 صبح
من منظورتونو متوجه نمیشم
فرض كنيد فقط txtownمقدار دهي شده باشه در اين صورت


strqry = "select * from order1 where and owner=@own ";

كه and اضافست

meri_rad
چهارشنبه 25 فروردین 1389, 09:50 صبح
واسه رفع اين مشكل از يه متغير استفاده كردم و بررسي كردم كه اگر اين اولين جملست كه بعد از whereاضافه ميشه ،and حذف بشه
راه اصولي هس كه از اون استفاده كنم

M.YasPro
چهارشنبه 25 فروردین 1389, 10:03 صبح
شما به جای
strqry = "select * from order1 where ";

بنویسید :
strqry = "select * from order1 where 1=1";

موفق باشید .