Avatar billede pcb Nybegynder
04. maj 2001 - 22:20 Der er 19 kommentarer og
1 løsning

Søgning i Access database med ASP

Hvordan søger jeg i en database ved hjælp af to form input som f.eks:

<form action=\"search.asp\" method=\"post\">
<font face=verdana size=2>Firmanavn:</font><input type=\"text\" name=\"Firmanavn\" size=10><br>
<font face=verdana size=2>Telefon:</font><input type=\"text\" name=\"Telefon\" size=10><br>
<input type=\"submit\" name=\"submit\" value=\"Søg igen\"><br>
</form>

Hvor de to form input altså skal matche f.eks kolloner i databasen.
Men det skal også være sådan at man kan lade være med at udfylde det ene af form felterne...
Jeg håber i forstår
Avatar billede bjarke-b Nybegynder
04. maj 2001 - 22:24 #1
<%
Set conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.Mappath(\"database.mdb\")
Set rs = Conn.Execute(\"select * from tabel where firmanavn like %\'\" & Request.form(\"firmanavn\") & \"\'% OR Telefon like %\'\" & Request.form(\"telefon\") & \"\'&\")
Do until rs.eof

Response.Write rs(\"firmanavn\") & \"<br>\"

rs.movenext
loop
rs.close
set rs = Nothing
conn.close
set conn =nothing
%>

Gem som search.asp
Avatar billede bjarke-b Nybegynder
04. maj 2001 - 22:26 #2
  <%
Set conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.Mappath(\"database.mdb\")
Set rs = Conn.Execute(\"select * from tabel where firmanavn like \'%\" & Request.form(\"firmanavn\") & \"%\' OR Telefon like \'%\" & Request.form(\"telefon\") & \"%\'&\")
Do until rs.eof

Response.Write rs(\"firmanavn\") & \"<br>\"

rs.movenext
loop
rs.close
set rs = Nothing
conn.close
set conn =nothing
%>
Avatar billede netsrac Praktikant
04. maj 2001 - 22:27 #3
search.asp

<%
if request.form(\"Firmanavn\") = \"\" AND request.form(\"telefon\") <> \"\" then
SQL = \"select from dintabel where telefon like \'%\" & request.form(\"telefon\") & \"%\'\"
elseif request.form(\"Firmanavn\") <> \"\" AND request.form(\"telefon\") = \"\" then
SQL = \"select from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\'\"
else
SQL = \"select from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\' OR telefon like \'%\" & request.form(\"telefon\") & \"%\'\"

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"
conn.execute(SQL)

if rs.eof then %>
Intet resultat
<%
else
do until rs.eof %>
<%=rs(\"telefon\") %><BR>
<%=rs(\"firmanavn\") %><BR><BR>
<% rs.movenext
loop
end if
set rs = nothing
conn.close
set conn = nothing %>
Avatar billede netsrac Praktikant
04. maj 2001 - 22:34 #4
Der mangler sørme en end if i min :-)

<%
if request.form(\"Firmanavn\") = \"\" AND request.form(\"telefon\") <> \"\" then
SQL = \"select from dintabel where telefon like \'%\" & request.form(\"telefon\") & \"%\'\"
elseif request.form(\"Firmanavn\") <> \"\" AND request.form(\"telefon\") = \"\" then
SQL = \"select from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\'\"
else
SQL = \"select from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\' OR telefon like \'%\" & request.form(\"telefon\") & \"%\'\"
end if

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"
conn.execute(SQL)

if rs.eof then %>
Intet resultat
<%
else
do until rs.eof %>
<%=rs(\"telefon\") %><BR>
<%=rs(\"firmanavn\") %><BR><BR>
<% rs.movenext
loop
end if
set rs = nothing
conn.close
set conn = nothing %>
Avatar billede pcb Nybegynder
04. maj 2001 - 22:40 #5
Netsrac>>>

Jeg får følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers fejl \'80040e14\'

[Microsoft][ODBC Microsoft Access-driver] SELECT-sætningen indeholder et reserveret ord eller argument, der er stavet forkert eller mangler, eller tegnsætningen er ikke korrekt.

/rnn/search.asp, linje 23
Avatar billede netsrac Praktikant
04. maj 2001 - 22:43 #6
Har du ændret navnet dintabel til navnet på din tabel og navnet database.mdb til navnet på din database ?

Og hedder kollonnerne i tabellen firmanavn og telefon ?
Avatar billede no_doubt Nybegynder
04. maj 2001 - 22:44 #7
har har nogle gode søge funktioner, se på www.zequenze.dk/fbn/drinks/searchform.asp, hvis det var noget så skriv på : mark.mikkelsen@mail.dk eller icq 92064248
Avatar billede pcb Nybegynder
04. maj 2001 - 22:46 #8
Netsrac>>>

Jeg har lige kigget efter igen...
Og alt som det skal være!!
Avatar billede netsrac Praktikant
04. maj 2001 - 22:52 #9
Doooh, dumme slag til mig, har fundet fejlen, der mangler en * :

<%
if request.form(\"Firmanavn\") = \"\" AND request.form(\"telefon\") <> \"\" then
SQL = \"select * from dintabel where telefon like \'%\" & request.form(\"telefon\") & \"%\'\"
elseif request.form(\"Firmanavn\") <> \"\" AND request.form(\"telefon\") = \"\" then
SQL = \"select * from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\'\"
else
SQL = \"select * from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\' OR telefon like \'%\" & request.form(\"telefon\") & \"%\'\"
end if

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"
conn.execute(SQL)

if rs.eof then %>
Intet resultat
<%
else
do until rs.eof %>
<%=rs(\"telefon\") %><BR>
<%=rs(\"firmanavn\") %><BR><BR>
<% rs.movenext
loop
end if
set rs = nothing
conn.close
set conn = nothing %>
Avatar billede pcb Nybegynder
04. maj 2001 - 22:58 #10
Netsrac>>>

okay, den fandt jeg også selv... *s*
men nu kommer følgende fejl!!


Der opstod en Microsoft VBScript-kørselsfejl fejl \'800a01a8\'

Et objekt er obligatorisk: \'rs\'

/rnn/search.asp, linje 22
Avatar billede bjarke-b Nybegynder
04. maj 2001 - 22:59 #11
<%
if request.form(\"Firmanavn\") = \"\" AND request.form(\"telefon\") <> \"\" then
SQL = \"select * from dintabel where telefon like \'%\" & request.form(\"telefon\") & \"%\'\"
elseif request.form(\"Firmanavn\") <> \"\" AND request.form(\"telefon\") = \"\" then
SQL = \"select * from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\'\"
else
SQL = \"select * from dintabel where firmanavn like \'%\" & request.form(\"firmanavn\") & \"%\' OR telefon like \'%\" & request.form(\"telefon\") & \"%\'\"
end if

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"
Set rs = conn.execute(SQL)

if rs.eof then %>
Intet resultat
<%
else
do until rs.eof %>
<%=rs(\"telefon\") %><BR>
<%=rs(\"firmanavn\") %><BR><BR>
<% rs.movenext
loop
end if
set rs = nothing
conn.close
set conn = nothing %>
Avatar billede netsrac Praktikant
04. maj 2001 - 23:01 #12
Damn da osse, brug den bjarke-b postede, der mangler også en set rs =
Avatar billede pcb Nybegynder
04. maj 2001 - 23:04 #13
Okay det virker....

Men, hvis jeg kun indtaster telefon nr i søge feltet kommer alle poster i databasen frem!

og det må der ikke... kun det firma som passer til telefon nummeret
Avatar billede netsrac Praktikant
04. maj 2001 - 23:06 #14
<%
if request.form(\"Firmanavn\") = \"\" AND request.form(\"telefon\") <> \"\" then
SQL = \"select * from dintabel where telefon = \'\" & request.form(\"telefon\") & \"\'\"
elseif request.form(\"Firmanavn\") <> \"\" AND request.form(\"telefon\") = \"\" then
SQL = \"select * from dintabel where firmanavn = \'\" & request.form(\"firmanavn\") & \"\'\"
else
SQL = \"select * from dintabel where firmanavn = \'\" & request.form(\"firmanavn\") & \"\' OR telefon = \'\" & request.form(\"telefon\") & \"\'\"
end if

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"
Set rs = conn.execute(SQL)

if rs.eof then %>
Intet resultat
<%
else
do until rs.eof %>
<%=rs(\"telefon\") %><BR>
<%=rs(\"firmanavn\") %><BR><BR>
<% rs.movenext
loop
end if
set rs = nothing
conn.close
set conn = nothing %> 
Avatar billede pcb Nybegynder
04. maj 2001 - 23:11 #15
Netsrac>>>

Okay... nu er vi ved at være der...
men nu når jeg kun udfylder telefon feltet,
kan den ikke finde noget!
Avatar billede netsrac Praktikant
04. maj 2001 - 23:12 #16
Hm...dette burde egentligt kunne gøre det:

<%
SQL = \"select * from dintabel where firmanavn = \'\" & request.form(\"firmanavn\") & \"\' OR telefon = \'\" & request.form(\"telefon\") & \"\'\"

Set Conn = Server.CreateObject(\"ADODB.Connection\")
Conn.Open \"PROVIDER=MSDASQL;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\" & Server.MapPath(\"database.mdb\") & \";UID=admin;PWD=;\"
Set rs = conn.execute(SQL)

if rs.eof then %>
Intet resultat
<%
else
do until rs.eof %>
<%=rs(\"telefon\") %><BR>
<%=rs(\"firmanavn\") %><BR><BR>
<% rs.movenext
loop
end if
set rs = nothing
conn.close
set conn = nothing %> 
Avatar billede pcb Nybegynder
04. maj 2001 - 23:16 #17
Netsrac>>>

nej, virker ikke! heller det nye du skrev!
Avatar billede netsrac Praktikant
04. maj 2001 - 23:21 #18
Hm...det burde virke, er du sikker på at du angiver det nøjagtigt som det står i databasen ? Ellers kan du lige sende databasen til eksperten@cnh.dk så skal jeg kigge på det.
Avatar billede pcb Nybegynder
04. maj 2001 - 23:28 #19
jeg har fået det til at virke...
Og du få dine point....

Og utrolig mange tak for hjælpen!
Avatar billede netsrac Praktikant
04. maj 2001 - 23:28 #20
Så lidt :-)
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