PDA

View Full Version : جستجوی ویژه در بانک داده



snisni63
چهارشنبه 03 مرداد 1386, 14:51 عصر
با سلام
نحوه جستجو کردن در بانک داده رو همین امروز یاد گرفتم
من از روش زیر استفاده می کنم :
Dim sconnection As String
sconnection = "Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\Database1.mdf;Integrated Security=True;User Instance=True"
Dim objconnection As New SqlClient.SqlConnection(sconnection)
objconnection.Open()

Dim dagroup1 As New SqlClient.SqlDataAdapter("select * from Melk where NameMalek Like 'س'", sconnection)

Dim dsgroup1 As New DataSet
dagroup1.Fill(dsgroup1, "group1")
DataGridView1.DataSource = dsgroup1.Tables("group1")


منتها من چند تا فیلد برای search کردن دارم. و میخوام کاربر رو در انتخاب گزینه های اون آزاد بزارم که مجبور نباشه تک تک فیلدها رو پر کنه. منظورم اینه که اگه کاربر یک یا چند فیلد رو پر نکرد برنامه بیشترین نتایج جستجو رو بر اساس اون فیلدهایی که پر کرده برگردونه. و اگه هیچ فیلدی رو پر نکرد همه رکوردهای بانک داده رو برگردونه
ممنون میشم

niksoft
چهارشنبه 03 مرداد 1386, 15:06 عصر
در عبارت Like خود مثل زیر عمل کنید


Field1 like '%'

ghafoori
چهارشنبه 03 مرداد 1386, 19:51 عصر
دوست عزیز اگر می خواهید همزمان روی چند فیلد جستجو انجام دهید چند عملگر like را همراه or یا and به کار برید

bad_boy_2007
پنج شنبه 04 مرداد 1386, 07:38 صبح
اگه از Query های ذخیره شده استفاده کنی خیلی راحت تری . یعنی همونطور که باقی دوستان گفتن با like ، and و . . . Query رو ایجاد کن بعد بوسیله پارامترها مقادی رو بده .
این روش قدری سریع تر عمل میکنه و راحت تر هم پیاده سازی میشه

snisni63
شنبه 06 مرداد 1386, 16:42 عصر
با تشکر از همه دوستان
خوب من فهمیدم که اگر بخوام توی همه فیلدهای یک ستون بدون شرط جستجو کنم باید بعد از LIKE فقط '%' بذارم. امتحانش هم کردم درست بود. بازم ممنون از دوستان
اما برای جستجو با استفاده از پارامترها به من کمک کنید. آیا اینجا هم پارامترها defaultValue دارند که مثلا اگر کاربر اون فیلد به خصوص رو فراموش کرد به طور پیشفرض اون پارامتر رو با '%' مقدار دهی کنه. اگه یک مثال برام بذارین دو زاریم زود می افته
thanx aloat

saeed_rezaei
یک شنبه 07 مرداد 1386, 00:28 صبح
من اینقده متوجه شده که شما میخواید توی برنامه، چنانچه کاربری مقدار یه پارامتر برای جستجو رو پیدا نکرد، سیستم به صورت یپش فرض جاش مقدار % قرار بده.

یه مثال می زنم.
می خوایم توی یه بانک اطلاعاتی دنبال لیستی از افراد بگردیم که کاربر قسمتی از نام یا نام خانوادگیشون رو وارد کرده باشه.
دقت کنید:
قسمتی از نام
یا
قسمتی از نام خانوادگی

فرض می کنیم که کانکشن رو قبلا ساختی بارشته ای که خودت تعریف کردی.


dim cn as new sqlconnection (myconnection _string)



حالا تو قسمت جستجو داریم:



dim name as string= txtname.text
dim famili as string = txtfamili.text

name = "%" & name & "%"
famili = "%" & famili & "%"

dim strsel as string =" select * from mytable where name like '" & name & "' and famili like '" & famili & "'"

dim da as new sqldataadapter (strsel, cn)
dim ds as new dataset

cn.open
da.fill (ds,"mytable")
cn.close



حالا اگه کاربر قسمتی از نام یا نام خانوادگی رو وارد کنه سیستم مشکلی نداره. همچنین اگه این دوتا رو خالی رد کنه، در نتیجه مقدار name برابر می شه با %% که هیچ مشکلی ایجاد نمی کنه. شما چه یک % بزنید چه دوتا، یکی در نظر گرفته میشه. و این یعنی همه.
ساخت رشته دست خودتونه. هر جوری که بخواید می تونید ترکیب کنید. بعد بدینش به دیتاآداپتور تا هنگام fill کردن ازش استفاده کنه.

bad_boy_2007
یک شنبه 07 مرداد 1386, 10:48 صبح
سلام دوستان
یه سوال داشتم ، saeed_rezaei (http://barnamenevis.org/forum/member.php?u=30229) عزیز ، با کدی که شما نوشتید ، هر بار که یوزر تقاضای جست و جو میده برنامه مجبوره بره دیتابیس رو باز کنه و نتیجه سوال رو در دیتاست لود کنه و به یوزر نشون بده حالا اگه اطلاعات زود به زود روی یوزرهای دیگه روی شبکه آپدیت نشه و طراح در نظر داشته باشه یک بار دیتاست رو پر کنه و هر بار که نیاز به جست و جو و یا Query خاص داره این کار رو با استفاده از دیتاست انجام بده باید از کدوم شئ استفاده کنه ؟( البته بعد از هر بروز رسانی دیتاست عملیات ذخیره سازی رو روی هارد هم ثبت کنه)
ممنون مشیم راهنماییم کنین .
چند تا کتاب رو نصفه نیمه خوندم ولی یکم گیج شدم (از بس ADO.net پیچیدگی داره :عصبانی++::لبخند:)