Avatar billede ndh Nybegynder
19. september 2001 - 13:43 Der er 5 kommentarer

Forskellige felter i søgeresultatet

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
Avatar billede tknudsen Nybegynder
19. september 2001 - 14:02 #1
hvad er det helt præcist du har problemer med gøre ?

vil du sætte et link ind på siden hvis noget bestemt data findes (gadevej) ?

udskriver du det i en liste - eller hur ?


hvorfor laver du 2 select statements - er det ikke mulig at lave dem til eet - og så lave en løkke på antallet af records i resultatet ?
Avatar billede tknudsen Nybegynder
19. september 2001 - 14:07 #2
kunne man ikke forestille sig at du gjorde noget lignende dette:

strSQL = \"SELECT tbl1.*,tbl2.* \" & _
        \"FROM tabel1 AS tbl1, tabel2 AS tbl2\" & _
        \"WHERE tbl1.gadevej = tbl2.gadevej\"

rs.Open strSQL,strDSN

while not rs.Eof
  response.write rs.Fields(\"et-eller-andet-fra tabel-1\") + \" - \" rs.Fields(\"noget-mere-fra tabel-1\")

  if len(rs.Fields(\"tbl2.gadevej\")) > 0 then
    response.write \'dit-anker
  end if

  rs.MoveNext
wend

Avatar billede ndh Nybegynder
19. september 2001 - 14:12 #3
Se mine scripts:

<%
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

strKeyword = Request.querystring(\"Keyword\")
strKeyword1 = Request.querystring(\"Keyword1\")
strKeyword2 = Request.querystring(\"Keyword2\")
strKeyword3 = Request.querystring(\"Keyword3\")
strKeyword4 = Request.querystring(\"Keyword4\")
strKeyword5 = Request.querystring(\"Keyword5\")
strKeyword6 = Request.querystring(\"Keyword6\")
strKeyword7 = Request.querystring(\"Keyword7\")
strKeyword8 = Request.querystring(\"Keyword8\")
strKeyword9 = Request.querystring(\"Keyword9\")
strartal = Request.querystring(\"artal\")

strtom = StrKeyword + StrKeyword1 + StrKeyword2 + StrKeyword3 + StrKeyword4 + StrKeyword5 + StrKeyword6 + StrKeyword7 + StrKeyword8 + StrKeyword9
strnummer = StrKeyword + StrKeyword1 + StrKeyword2 + StrKeyword3 + StrKeyword4 + StrKeyword6 + StrKeyword7 + StrKeyword8 + StrKeyword9

If Len(strtom) = 0 Then

Response.Clear
Response.Redirect(\"borgerdb.htm\")
Else
strKeyword = Replace(strKeyword,\"\'\",\"\'\'\")
strKeyword1 = Replace(strKeyword1,\"\'\",\"\'\'\")
strKeyword2 = Replace(strKeyword2,\"\'\",\"\'\'\")
strKeyword3 = Replace(strKeyword3,\"\'\",\"\'\'\")
strKeyword4 = Replace(strKeyword4,\"\'\",\"\'\'\")
strKeyword5 = Replace(strKeyword5,\"\'\",\"\'\'\")
strKeyword6 = Replace(strKeyword6,\"\'\",\"\'\'\")
strKeyword7 = Replace(strKeyword7,\"\'\",\"\'\'\")
strKeyword8 = Replace(strKeyword8,\"\'\",\"\'\'\")
strKeyword9 = Replace(strKeyword9,\"\'\",\"\'\'\")
strartal = Replace(strartal,\"\'\",\"\'\'\")

End If

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

Response.Write \"<a href=search.asp?artal=\" & strartal & \"&Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intNum & \">\" & intNum & \"</a> \"
Next
Response.Write \"<p>\"
If Clng(intPage) > 1 Then
Response.Write \"<a href=search.asp?artal=\" & strartal & \"&Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intPage - 1 & \">&lt;&lt;</a>\"
Else
Response.Write \"&lt;&lt;\"
End If
Response.Write \"&nbsp;\"
If Clng(intPage) < Clng(intPageCount) Then
Response.Write \"<a href=search.asp?artal=\" & strartal & \"&Keyword=\" & strKeyword & \"&Keyword1=\" & strKeyword1 & \"&Keyword2=\" & strKeyword2 & \"&Keyword3=\" & strKeyword3 & \"&Keyword4=\" & strKeyword4 & \"&Keyword5=\" & strKeyword5 & \"&Keyword6=\" & strKeyword6 & \"&Keyword7=\" & strKeyword7 & \"&Keyword8=\" & strKeyword8 & \"&Keyword9=\" & strKeyword9 &\"&page=\" & intPage + 1 & \">&gt;&gt;</a>\"
Else
Response.Write \"&gt;&gt;\"
End If
End if
End if



Script 2 torve.asp

<%
strgadevej = Request(\"id\")
strgadevejnummer = Request(\"id1\")
Set rs = Server.CreateObject(\"ADODB.RecordSet\")
strSQL = \"SELECT * FROM torvegade WHERE\"
strSQL = strSQL & \" (Gadevej LIKE \'%\" & strgadevej & \"%\')\"
strSQL = strSQL & \" AND (Gadevejnummer LIKE \'%\" & strgadevejnummer & \"%\')\"

strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"torvegade.mdb\")
rs.Open strSQL, strDSN, 1
If Not (rs.BOF Or rs.EOF) Then

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>nummer:  </b>\" & rs(\"Gadevejnummer\") & \"</font><br>\"

end if
rs.Close
Set rs = Nothing
%>
Avatar billede tknudsen Nybegynder
19. september 2001 - 14:13 #4
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
Avatar billede ndh Nybegynder
26. september 2001 - 09:00 #5
TDknudsen

Prøv at uddybe dit svar!
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