PDA

View Full Version : جستجو در دیتابیس بر اساس چند فیلد



man.inam
جمعه 27 شهریور 1388, 23:05 عصر
سلام.
یه دستورselect دارم برای جستجو که میخوام تو قسمت where چندتا شرط بذارم مثلا می خوام جستجو براساس نام و نام خانوادگی ، زبان برنامه نویسی و یه سری فیلدای دیگه باشه که بررسی بشه اگه این textbox ها و یا combo ها خالی نبودن تو جستجو شرکت داده بشن و اگه یکیشون خالی بود بر اساس اونایی که پر هستن جستجو انجام بشه . امیدوارم تونسته باشم منظورم رو برسونم .

majid_vb_2008
جمعه 27 شهریور 1388, 23:43 عصر
شما مي توانيد از عملگرهاي
And و or
استفاده كنيد
مثال


strsql = "Select * From Tabel Where Name '" & textbox1.Text & "' AND '" & textbox2.Text & "'"

man.inam
شنبه 28 شهریور 1388, 00:05 صبح
نه منظورم این نیست ...
میخوام شرط بذارم که اگه تکست باکس نام و نام خانوادگی خالی نبود با نام و نام خانوادگی جستجو کنه ... اگه تکست باکس نام و نام خانوادگی و موضوع خالی نبودن با این دو تا جستجو کنه ...
یعنی من میخوام جستجو م بر اساس 4 تا فیلد از جدول های دیتابیسم باشه که select اینو نوشتم فقط تو شرط موندم . یعنی کاربر اگه هر کودوم از این مقادیر رو وارد کرد برای جستجو بر اساس همونا جستجو انجام بشه

SamIran
شنبه 28 شهریور 1388, 00:11 صبح
من دقیقا میدونم منظورت چی هست و یک مثال هم امروز پست کردم! امیدوارم به دردت بخوره!
http://barnamenevis.org/forum/showthread.php?t=180177

man.inam
شنبه 28 شهریور 1388, 00:42 صبح
من دقیقا میدونم منظورت چی هست و یک مثال هم امروز پست کردم! امیدوارم به دردت بخوره!
http://barnamenevis.org/forum/showthread.php?t=180177
نمیتونم دانلودش کنم ...error میده :اشتباه:

man.inam
شنبه 28 شهریور 1388, 16:01 عصر
من برا این کار یه تابع نوشتم اینجوری ( تو یه برنامه ای بود اینجوری فقط اونجا یه جدول بود)

ـ

Private Sub Check()
If txtnam.Text = "" Then
StrFild1 = " stud.fname Like '%%' "
Else
StrFild1 = " stud.fname ='" + txtnam.Text + "' "
End If
If txtsubb.Text = "" Then
StrFild2 = " proj.sub Like '%%' "
Else
StrFild2 = " proj.sub ='" + txtsubb.Text + "' "
End If
If comp1.Text = "" Then
StrFild3 = " prof.pname Like '%%' "
Else
StrFild3 = " prof.pname ='" + comp1.Text + "' "
End If
If com1.Text = "" Then
strfild4 = " proj.lang Like '%%' "
Else
strfild4 = " proj.lang ='" + com1.Text + "' "
End If
End Sub
ـ

چون select من join داره یعنی از چندتا جدول که با هم ارتباط دارن استفاده شده،نمیدونم دقیق چیکارباید بکنم یعنی تو کد بالا که نوشتم مثلا prof.pname درست هست یا نه! اگه نه چطوری باید بنویسیم؟
اینم select

ـ SELECT (stud.fname, stud.lname, stud.tel, stud.mail, stud.dat, stud.term, prof.pname, proj.profid, proj.score) FROM ((proj INNER JOIN prof ON proj.profid = prof.profid) INNER JOIN stud ON proj.id = stud.id) Where" + StrFild1 + " And " + StrFild2 + " And " + StrFild3 + "and" + strfild4ـ

maXXis
شنبه 28 شهریور 1388, 20:02 عصر
میتونی از این استفاده کنی:



DataView1.RowFilter = "name LIKE '%" & TextBox1.Text & "%'"
DataView1.RowFilter = "family LIKE '%" & TextBox2.Text & "%'"


با این تا 100 تا هم می تونی..... اصلا محدودیت نداری.:لبخند:.
امیدوارم مفید باشه.
این اگه قسمتی از اون فیلد رو هم وارد کنی باز هم پیدا میکنه.

man.inam
یک شنبه 29 شهریور 1388, 23:56 عصر
اون کدایی که نوشتم درستن ؟
بقیه کد ها هم اینه ولی error میده :ناراحت:

Syntax error (comma) in query expression '(stud.fname, stud.lname, stud.tel, stud.mail, stud.dat, stud.term, prof.pname, proj.profid, proj.score)'
ـ

ـ
Dim Ds As New DataSet

CheckNull()
OleDa.SelectCommand = New OleDbCommand
OleDa.SelectCommand.CommandText = "SELECT (stud.fname, stud.lname, stud.tel, stud.mail, stud.dat, stud.term, prof.pname, proj.profid, proj.score) FROM ((proj INNER JOIN prof ON proj.profid = prof.profid) INNER JOIN stud ON proj.id = stud.id) Where" + StrFild1 + " And " + StrFild2 + " And " + StrFild3 + "And" + strfild4
OleDa.SelectCommand.Connection = cnnstr1
OleDa.Fill(Ds, "q1")
dg1.DataSource = Nothing
dg1.DataSource = Ds
dg1.DataMember = "q1"
Ds = Nothing
ـ