Avatar billede clp Nybegynder
04. maj 2002 - 13:56 Der er 5 kommentarer og
1 løsning

Søg i 2 tabeller

Jeg har en søge funktion der søger i en tabel, men jeg vil gerne have den til at søge i 2 tabeller i samme database. kolonnerne hedder det samme i begge tabeller.

Hvordan får jeg den til at søge i 2 tabeller??

Min søge funktion ser sådan ud nu:
<% Response.Buffer = True %>
<%
' Udskriver Søgeordet
word = Request.form("Keyword")
Response.Write "<u>" & word & "</u>"
%>
<%
' Henter værdien fra search.htm
strKeyword = Trim(Request.Form("Keyword"))

' Hvis der ikke er skrevet i feltet
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect("search.htm")

Else

' Hvis der er skrevet i feltet
strKeyword = Replace(strKeyword,"'","''")

End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT test1, test2, test3, test4, test5 FROM link WHERE"
strSQL = strSQL & " (test1 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test2 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test3 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test4 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test5 LIKE '%" & strKeyword & "%')"


' Databaseforbindelse [DNSless] - Stien til databasen lokaliseres
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("test.mdb")
Conn.Open DSN



' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)

' Hvis der er fundet poster på søgningen
If Not (rs.BOF Or rs.EOF) Then

Do While Not rs.EOF

' Variabler deklæres
test1 = rs("test1")
test2 = rs("test2")
test3 = rs("test3")
test4 = rs("test4")
test5 = rs("test5")


' Generere et link, som er defineret i databasen
Link = "<font color=000000><b><a href=" & test2 & ">" & test1 & ", " & test5 & "</a></b></font>"

' Udskriver linket som det blev genereret ovenfor + tilhørende kommentar

%>


<%
rs.MoveNext
Loop
Else

' Hvis der ikke er fundet poster på søgningen
Response.Write "<li>N / A"

End If

' Databaseforbindelsen lukkes
Conn.Close
Set Conn = Nothing
%>

Avatar billede medions Nybegynder
04. maj 2002 - 13:58 #1
<% Response.Buffer = True %>
<%
' Udskriver Søgeordet
word = Request.form("Keyword")
Response.Write "<u>" & word & "</u>"
%>
<%
' Henter værdien fra search.htm
strKeyword = Trim(Request.Form("Keyword"))

' Hvis der ikke er skrevet i feltet
If Len(strKeyword) = 0 Then
Response.Clear
Response.Redirect("search.htm")

Else

' Hvis der er skrevet i feltet
strKeyword = Replace(strKeyword,"'","''")

End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT test1, test2, test3, test4, test5 FROM link,tabelnr2 WHERE"
strSQL = strSQL & " (test1 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test2 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test3 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test4 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (test5 LIKE '%" & strKeyword & "%')"


' Databaseforbindelse [DNSless] - Stien til databasen lokaliseres
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("test.mdb")
Conn.Open DSN



' Skaber et recordset udfra SQL strengen
Set rs = Conn.Execute(strSQL)

' Hvis der er fundet poster på søgningen
If Not (rs.BOF Or rs.EOF) Then

Do While Not rs.EOF

' Variabler deklæres
test1 = rs("test1")
test2 = rs("test2")
test3 = rs("test3")
test4 = rs("test4")
test5 = rs("test5")


' Generere et link, som er defineret i databasen
Link = "<font color=000000><b><a href=" & test2 & ">" & test1 & ", " & test5 & "</a></b></font>"

' Udskriver linket som det blev genereret ovenfor + tilhørende kommentar

%>


<%
rs.MoveNext
Loop
Else

' Hvis der ikke er fundet poster på søgningen
Response.Write "<li>N / A"

End If

' Databaseforbindelsen lukkes
Conn.Close
Set Conn = Nothing
%>

Skriv dit tabel navn der hvor jeg har skrevet tabelnr2!
//>Rune
Avatar billede clp Nybegynder
04. maj 2002 - 14:14 #2
Har prøvet det, men så får jeg denne besked.

Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] The specified field 'Name' could refer to more than one table listed in the FROM clause of your SQL statement.

/search.asp, line 61
Avatar billede soes Nybegynder
04. maj 2002 - 15:04 #3
prøv med:
SELECT test1.links, test2.links, test1.tab2, test2.tab2 FROM links, tab2...

ved ikke om det samme gør sig gældende i WHERE klausulet.
men jeg har selv brugt overstående i en anden forbindelse.

/Søren Søndergård
Avatar billede clp Nybegynder
04. maj 2002 - 15:49 #4
så får jeg denne fejl:
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver] The specified field 'Name' could refer to more than one table listed in the FROM clause of your SQL statement.

/search.asp, line 61
Avatar billede clp Nybegynder
04. maj 2002 - 20:40 #5
Er det muligt at der en der vil hjælpe meg med at lave en søgefunktion fra bunden, som kan søge i 2 tabeller(i samme database)??
Avatar billede clp Nybegynder
26. januar 2006 - 15:31 #6
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester