Jeg er ved at udvikle en søgemaskine, som skal kunne frembringe søgeresultater, hvori der i nogle af posterne skal indgå et hyperlink. Ved aktivering af hyperlinket sendes indholdet af 2 af recordsættene over i andet script, der så udfører en søgning i en anden tabel.
Mit problem er nu, at jeg i mit første script skal lave et argument, der skal have den funktion, at hyperlinket kun vises ved de poster, som har en værdi i gadevej-feltet i tabel1, som også findes i gadevej-feltet i tabel2 (torvegade). Hvad gør jeg galt?
Se nedenstående uddrag af et script. I scriptet er der allerede udført en Select * tidligere i tabel1 og recordsættet rs(gadevej) findes.
strgade = RS(\"gadevej\") Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"SELECT * FROM tabel2 WHERE\" strSQL = strSQL & \" (Gadevej LIKE \'%\" & strgade1 & \"%\')\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"db.mdb\") rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then
If len(rs(\"gadevej1\")) > 0 then
Response.write \"<a href=\'torve.asp?id=\" & rs(\"gadevej\") & \"&id1=\" & rs(\"gadevejnummer\") & \"\' target=\'_blank\'><b><font face=\'Trebuchet\' size=\'2\' color=\'#000000\'>Se bygningsbeskrivelse\" & \"</font></a></b><br><br>\" end if end if
<% Dim StrKeyword Dim StrKeyword1 Dim StrKeyword2 Dim StrKeyword3 Dim StrKeyword4 Dim StrKeyword5 Dim StrKeyword6 Dim StrKeyword7 Dim StrKeyword8 Dim StrKeyword9 Dim Strtom Dim strnummer Dim Strartal
intPage = Request(\"page\") If isNumeric(intPage) = False Or intPage < 1 Then intPage = 1 End If Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"SELECT * FROM Tabel WHERE\" strSQL = strSQL & \" ((Efternavn LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Fornavne LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Fodselsdato LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Fodested LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Gadevej LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Gadevejnummer Like \'\" & strKeyword & \"\')\" strSQL = strSQL & \" OR (Stilling LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Statusihusstand LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (Tidligerebosaettelse LIKE \'%\" & strKeyword & \"%\'))\" If Len(strKeyword1) > 0 Then strSQL = strSQL & \" AND (Efternavn LIKE \'%\" & strKeyword1 & \"%\')\" End if
If Len(strKeyword2) > 0 Then strSQL = strSQL & \" AND (Fornavne LIKE \'%\" & strKeyword2 & \"%\')\" End if
If Len(strKeyword3) > 0 Then strSQL = strSQL & \" AND (Fodselsdato LIKE \'%\" & strKeyword3 & \"%\')\" End if
If Len(strKeyword4) > 0 Then strSQL = strSQL & \" AND (Fodested LIKE \'%\" & strKeyword4 & \"%\')\" End if
If Len(strKeyword5) > 0 Then strSQL = strSQL & \" AND (Gadevej LIKE \'%\" & strKeyword5 & \"%\')\" End if
If Len(strKeyword6) > 0 Then strSQL = strSQL & \" AND (Gadevejnummer Like \'\" & strKeyword6 & \"\')\" End if
If Len(strKeyword7) > 0 Then strSQL = strSQL & \" AND (Stilling LIKE \'%\" & strKeyword7 & \"%\')\" End if
If Len(strKeyword8) > 0 Then strSQL = strSQL & \" AND (Statusihusstand LIKE \'%\" & strKeyword8 & \"%\')\" End if
If Len(strKeyword9) > 0 Then strSQL = strSQL & \" AND (Tidligerebosaettelse LIKE \'%\" & strKeyword9 & \"%\')\" End if
If Len(strnummer) = 0 Then strSQL = strSQL & \"ORDER BY Gadevejnummer\" Else strSQL = strSQL & \"ORDER BY Efternavn, Fornavne, Gadevej, Gadevejnummer, Fodested, Fodselsdato, Stilling, Statusihusstand, Tidligerebosaettelse\" end if
If (strartal) =\"1899\" then strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"torvegade.mdb\") else strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"Borgerdatabase1.mdb\") end if rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then rs.PageSize = 5 rs.AbsolutePage = intPage intRecCount = rs.PageSize intPageCount = rs.PageCount
AntalP = rs.RecordCount
If (strartal) =\"1899\" then Response.Write \"<p><b><font color=#000000 font face=Trebuchet MS size=3>Borgere optaget i skattemandtalslisterne i 1899</b></p>\" End if If (strartal) =\"1904\" then Response.Write \"<p><b><font color=#000000 font face=Trebuchet MS size=3>Borgere optaget i skattemandtalslisterne i 1904</b></p>\" End if If AntalP = 1 then Response.write \"<p><b><font color=#000000 font face=Trebuchet MS size=2>Din søgning resulterede i \" & AntalP & \" borger<br></b></p>\" End if If AntalP > 1 then Response.write \"<p><b><font color=#000000 font face=Trebuchet MS size=2>Din søgning resulterede i \" & AntalP & \" borgere<br></b></p>\" End if If AntalP > 5 then Response.Write \"<p><b><font color=#000000 font face=Trebuchet MS size=2>Side \" & intPage & \" af \" & intPageCount & \"</b></p>\" End if Do While Not rs.EOF And intRecCount > 0
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Efternavn: </b>\" & rs(\"Efternavn\") & \"</font><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Fornavn: </b>\" & rs(\"Fornavne\") & \"</font><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Fødselsdato: </b>\" & rs(\"Fodselsdato\") & \"</font><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Fødested: </b>\" & rs(\"Fodested\") & \"</font><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Gade/vej: </b>\" & rs(\"Gadevej\") & \"</font><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Gade-/vejnummer: </b>\" & rs(\"Gadevejnummer\") & \"</font></b><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Stilling: </b>\" & rs(\"Stilling\") & \"</font></b><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Status i husstand: </b>\" & rs(\"Statusihusstand\") & \"</font></b><br>\"
Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Tidligere bosættelse: </b>\" & rs(\"Tidligerebosaettelse\") & \"</b><br><br>\"
\' test
strgade1 = RS(\"gadevej\") If RS(\"gadevej\") = \"torvegade\" then Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"SELECT * FROM torvegade WHERE\" strSQL = strSQL & \" (Gadevej1 LIKE \'%\" & strgade1 & \"%\')\"
strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"torvegade.mdb\") rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then
If len(rs(\"gadevej1\")) > 0 then
Response.write \"<a href=\'torve.asp?id=\" & rs(\"gadevej\") & \"&id1=\" & rs(\"gadevejnummer\") & \"\' target=\'_blank\'><b><font face=\'Trebuchet\' size=\'2\' color=\'#000000\'>Se bygningsbeskrivelse\" & \"</font></a></b><br><br>\" end if end if
intRecCount = intRecCount - 1 rs.MoveNext Loop \' Else End if if rs.recordcount = 0 then Response.Write \"<font color=#000000 font face=Trebuchet MS size=2><b>Der er ikke fundet nogle borgere, der matcher din søgning\" ELse \' End If rs.Close Set rs = Nothing If AntalP > 5 then Response.Write \"<p>Gå til side \" For intNum = 1 To intPageCount
hvis ikke du er sikker på at gadevej fra tabel 1 findes i tabel 2 skal du lave en JOIN istedet:
\"SELECT tbl1.* FROM tabel1 AS tbl1 \" & _ \"JOIN tabel2 AS tbl2 \" & _ \"ON tbl1.gadevej = tbl2.gadevej\"
men fordi en JOIN returnere NULL-værdier på de felter der ikke eksisterer, skal du istedet for længden af rs.Fields(\"tbl2.gadevej\") spørge på om den er forskellig fra NULL:
if not isNull(rs.Fields(\"tbl2.gadevej\") then ... end if
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.