15. oktober 2001 - 09:45Der er
10 kommentarer og 1 løsning
Kombineret søgning
Er der en der ved hvordan man laver en kombineret søgning, dvs en søgning hvor man fx kan udfylde feltet navn og feltet efternavn og så få et resultat hvor begge felter ingår. Min kode ser således ud:
sql = (\"SELECT * FROM tabel WHERE fornavne LIKE \'%\" & Request.Form(\"fornavne\") & \"%\' And efternavn LIKE \'%\" & Request.Form(\"efternavn\") & \"%\' And erhverv LIKE \'%\" & Request.Form(\"erhverv\") & \"%\' And født LIKE \'%\" & Request.Form(\"fodt\") & \"%\' And dødsdato LIKE \'%\" & Request.Form(\"dodsdato\") & \"%\' And asf LIKE \'%\" & Request.Form(\"asf\") & \"%\'\" ) Set rs= oConn.Execute(sql)
Det her virker kun halvt. Hvis resultatet af min søgning har et tomt felt som der kan søges på, kommer posten ikke med i resultatet selvom den burde være med.
Du har en søgeform hvor man ka indtasts: fornavn efternavn mm.
Jeg forstår ikke denne \"Hvis resultatet af min søgning har et tomt felt som der kan søges på\"
Om du benytter AND eller OR kommer an på hvad du ønsker af dit søeresulttat, hvis du vil begrænse til få resultater så benyt AND hvis du vil havde mange resultater så benyt OR.
fornavn AND efternavn så skal både Fornavn og Efternavn være i posten for at den bliver valgt. fornavn OR efternavn så skal enten Fornavn eller Efternavn være i posten for at den bliver valgt.
Hvis jeg fx søger på fornavn: Jens, skal resultatet indeholde 5 poster.
Hvis ikke alle felter der hører til jens er udfyldt fx der mangler information om hans adresse, kommer han ikke med i resultatet. Jeg har fundet ud af at det sker når det præcist er et af de felter man kan søge på der ikke er udfyldt i tabellen.
Så kan du bygge din WHERE op ved at tjekke på om man har indtastet noget i søge-felterne noget i den her stil, det fylder godt nok lidt:
SQLWhere = \"\" If Request.Form(\"fornavne\") <> \"\" then SQLWhere = \"fornavne LIKE \'%\" & Request.Form(\"fornavne\") & \"%\'\" End if If Request.Form(\"efternavn\") <> \"\" then If SQLWhere = \"\" then SQLWhere = \"efternavn LIKE \'%\" & Request.Form(\"fornavne\") & \"%\'\" else SQLWhere = SQLWhere & \" And efternavn LIKE \'%\" & Request.Form(\"efternavn\") & \"%\'\" End if End if If Request.Form(\"erhverv\") <> \"\" then If SQLWhere = \"\" then SQLWhere = \" erhverv LIKE \'%\" & Request.Form(\"erhverv \") & \"%\'\" else SQLWhere = SQLWhere & \" And erhverv LIKE \'%\" & Request.Form(\"erhverv \") & \"%\'\" End if End if If Request.Form(\"fodt \") <> \"\" then If SQLWhere = \"\" then SQLWhere = \" født LIKE \'%\" & Request.Form(\"fodt \") & \"%\'\" else SQLWhere = SQLWhere & \" And født LIKE \'%\" & Request.Form(\"fodt \") & \"%\'\" End if End if If Request.Form(\"dodsdato \") <> \"\" then If SQLWhere = \"\" then SQLWhere = \" dødsdato LIKE \'%\" & Request.Form(\"dodsdato \") & \"%\'\" else SQLWhere = SQLWhere & \" And dødsdato LIKE \'%\" & Request.Form(\"dodsdato \") & \"%\'\" End if End if If Request.Form(\"asf \") <> \"\" then If SQLWhere = \"\" then SQLWhere = \" asf LIKE \'%\" & Request.Form(\"asf \") & \"%\'\" else SQLWhere = SQLWhere & \" And asf LIKE \'%\" & Request.Form(\"asf \") & \"%\'\" End if End if
If Request.Form(\"dodsdato \") <> \"\" then If SQLWhere <> \"\" then SQLWhere = SQLWhere & \" AND \" End if SQLWhere = SQLWhere & \"dødsdato LIKE \'%\" & Request.Form(\"dodsdato \") & \"%\'\" End if
du kan skrve det sådan her så fylder det ikke så meget:
SQLWhere = \"\" If Request.Form(\"fornavne\") <> \"\" then SQLWhere = \"fornavne LIKE \'%\" & Request.Form(\"fornavne\") & \"%\'\" End if If Request.Form(\"efternavn\") <> \"\" then If SQLWhere <> \"\" then SQLWhere = SQLWhere & \" AND \" End if SQLWhere = SQLWhere & \"efternavn LIKE \'%\" & Request.Form(\"fornavne\") & \"%\'\" End if If Request.Form(\"erhverv\") <> \"\" then If SQLWhere <> \"\" then SQLWhere = SQLWhere & \" AND \" End if SQLWhere = SQLWhere & \"erhverv LIKE \'%\" & Request.Form(\"erhverv \") & \"%\'\" End if If Request.Form(\"fodt \") <> \"\" then If SQLWhere <> \"\" then SQLWhere = SQLWhere & \" AND \" End if SQLWhere = SQLWhere & \"født LIKE \'%\" & Request.Form(\"fodt \") & \"%\'\" End if If Request.Form(\"dodsdato \") <> \"\" then If SQLWhere <> \"\" then SQLWhere = SQLWhere & \" AND \" End if SQLWhere = SQLWhere & \"dødsdato LIKE \'%\" & Request.Form(\"dodsdato \") & \"%\'\" End if If Request.Form(\"asf \") <> \"\" then If SQLWhere <> \"\" then SQLWhere = SQLWhere & \" AND \" End if SQLWhere = SQLWhere & \"asf LIKE \'%\" & Request.Form(\"asf \") & \"%\'\" 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.