مشكل در فرم جستجو با استفاده از asp

tondar

Member
سلام
من يك فرم را براي وب طراحي كرده ام تا database را بر اساس فيلد مورد نظر جستجو كرده و نتايج را ارايه دهد . حالا مشكلي كه دارم اينست كه كلماتي كه براي جستجو بصورت فاصله دار(با spacebar) در فيلد مينويسم همه را بصورت يكجا ميبيند. مثلا اگر بنويسم ( محمد عزيزي ) تنها ركوردهايي را مياورد كه عبارت محمد عزيزي بصورت پشت سر هم نوشته شده باشد ( و مثلا محمد حسين عزيزي را نمياورد) در صورتيكه هدف من اينست كه دو كلمه مورد نظر در هر كجا از فيلد و حتي با فاصله و يا پس و پيش باشند آن ركورد آورده شود. ضمنا زبان برنامه نويسي asp ميباشد.
لطفا در اين مورد مرا راهنمايي كنيد
متشكرم
 

pirooz

Member
سلام
شما بايد توسط فرمان split كلمات را تكه تكه كنيد و با استفاده از يك لوپ تك تك كلمات را جستجو كنيد.

براي نمونه شما مي‌توانيد نرم‌افزار زير را داونلود كنيد و اسكريبپت‌هاي اي. اس. پي را در مورد يك سايت جستجو ببينيد.

از اينجا داونلود كنيد
 

tondar

Member
سلام آقا پيروز
از راهنماييتون خيلي ممنونم ولي خيلي ممنون ميشم اگه خودتون يك مثال عملي در اين مورد بزنيد.
ضمنا يادم رفت بگم كه من اين فرم را در frontpage طراحي كرده و بصورت asp ذخيره كرده ام.
متشكر
 

saeedsmka

Member
اينم كدش
کد:
st1 = "saeedali ut/yu+re|qw&qwe"
Dim sto(10), opr(10)
doit = True
i = 0
j = 1
While doit
i = i + 1
a = Mid(st1, i, 1)
Select Case a
    Case " ", "&", "+"
        sto(j) = Left(st1, i - 1)
        opr(j) = " and test like '%"
        st1 = Right(st1, Len(st1) - i)
        i = 0
        j = j + 1
    Case "/", "|"
        sto(j) = Left(st1, i - 1)
        opr(j) = " or test like '%"
        st1 = Right(st1, Len(st1) - i)
        i = 0
        j = j + 1
End Select
If i >= Len(st1) Then
    doit = False
    sto(j) = st1
    opr(j) = ""
End If
Wend
sqlt = " selct * from test where test like '%"
For i = 1 To j
sqlt = sqlt + sto(i) & "%' " & opr(i)
Next
Text1.Text = sqlt
 

hoom

Active Member
سلام

اين رو من امتحان كردم و خيلي خوب كار ميكنه. فيلدي كه من اينجا استفاده ميكنم اسمش Resolution هستش.

کد:
<% OPTION EXPLICIT %>

<%
Dim strSearchString
Dim arrSearchString
Dim I
Dim myConnection, RS
Dim SQLQuery

strSearchString = "Send DSP"
arrSearchString = Split(strSearchString, " ")

Set myConnection = CreateObject("ADODB.Connection")
myConnection.Open "DSN=QPMDSN;UID=XUser;PWD=xxx"

SQLQuery = "Select * From QPM_IncTable WHERE "

For I = LBound(arrSearchString) To UBound(arrSearchString)
  SQLQuery = SQLQuery & "(Resolution LIKE N'%" & arrSearchString(I) & "%') AND "
Next

'Delete last AND word
SQLQuery = Left(SQLQuery, Len(SQLQuery) - 5)

set RS =  myConnection.Execute(SQLQuery)

RS.MoveFirst

Do While Not RS.EOF
 Response.Write RS.Fields("IncNo") & " " & RS.Fields("Resolution") & "<BR>"

	RS.MoveNext
Loop


set myConnection = Nothing
set RS = Nothing
%>
ارادتمند
 

جدیدترین ارسال ها

بالا