Avatar billede mads1979 Nybegynder
22. maj 2003 - 17:48 Der er 32 kommentarer og
1 løsning

Søg fra Access database

Jeg vil gerne lave en søgning fra en ACCESS db med 4 poster. cd, nr, titel, artist ....

Jeg har prøvet med en guide i en af mine ASP bøger, men kan sQ ikke få det til at virke. Kan I give mig et eksempel.
Jeg vil gerne have resultatet vist i listeform. og der er kun ét søgefelt.

Takker.
Avatar billede -master-d- Nybegynder
22. maj 2003 - 17:53 #1
Sådan her :

<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb")
Conn.Open DSN

SQL = "Select cd, nr, titel, artist FROM tabelnavn"
Set rs = Conn.Execute(SQL)

If Not(rs.bof or rs.EOF) Then
Do while not rs.eof%>
<li><%=rs("nr")%>. <%=rs("artist")%> - <%=rs("cd")%> - <%=rs("nr")%> </li>
<%rs.movenext
loop
End If

Conn.Close
Set Conn = NOthing
%>

Og så kig her.

http://www.html.dk  <-- under asp tutorial.
Avatar billede mads1979 Nybegynder
22. maj 2003 - 18:21 #2
Nej nej... ikke allesammen... bare dem man søger på...

Ex. jeg søger "Jesus" (eller så'n noget)
så gider den mig res. tilbage hvor Jesus enten er cd,nr,titel eller artist...
Avatar billede keysersoze Guru
22. maj 2003 - 18:22 #3
Avatar billede -master-d- Nybegynder
22. maj 2003 - 21:21 #4
Så laver du bare sådan en her :

<%
'søgefelt i formularen hedder search.

If Request.Form("search") <> "" Then

ord = Request.Form("search")

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb")
Conn.Open DSN

SQL = "Select cd, nr, titel, artist FROM tabelnavn WHERE cd LIKE '"& ord &"' OR nr LIKE '"& ord &"' OR artist LIKE '"& ord &"' or titel LIKE '"& ord &"'"
Set rs = Conn.Execute(SQL)

If Not(rs.bof or rs.EOF) Then
Do while not rs.eof%>
<li><%=rs("nr")%>. <%=rs("artist")%> - <%=rs("cd")%> - <%=rs("nr")%> </li>
<%rs.movenext
loop
End If

Conn.Close
Set Conn = NOthing
End If
%>
Avatar billede -master-d- Nybegynder
22. maj 2003 - 21:22 #5
Også kan du så selv sætte diverse wildvards ind (% og  *)

ex. titel LIKE '%"& ord &"' OR titel LIKE '"& ord &"%'
Avatar billede mads1979 Nybegynder
29. maj 2003 - 13:51 #6
Det virker sQ ikke... får bare en blank side...
Avatar billede keysersoze Guru
29. maj 2003 - 14:10 #7
har du fulgt den tutorial jeg gav link til?

kom med lidt kode eller en henvisning til hvor vi kan se det i funktion - ellers er det liiidt svært at hjælpe...
Avatar billede mads1979 Nybegynder
29. maj 2003 - 14:25 #8
Jeg har prøvet, men kan ikke få det til at virke...
Jeg har

karaoke.asp med søgefelt = search
karadata.asp ... som jeg ikke helt kan få til at virke...
Enten får jeg fejlmeldinger eller blank side...
Avatar billede keysersoze Guru
29. maj 2003 - 14:36 #9
jamen så kom nu med lidt mere info! det er umuligt at hjælpe med noget når vi bare får at vide "det virker ikke"...

kom med noget kode - kom med en henvisning til hvor vi kan teste det - eller kom med fejlbeskrivelsen
Avatar billede zipper20 Nybegynder
29. maj 2003 - 14:38 #10
Okay... www.fy-bi.dk  -> Karaoké.
Avatar billede zipper20 Nybegynder
29. maj 2003 - 14:39 #11
Koden i karadata.asp

<%@LANGUAGE="VBSCRIPT"%>

<%
'søgefelt i formularen hedder search.

If Request.Form("search") <> "" Then

ord = Request.Form("search")

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

SQL = "Select cd, nr, titel, artist FROM Karaoke WHERE cd LIKE '"& ord &"' OR nr LIKE '"& ord &"'

OR artist LIKE '"& ord &"' or titel LIKE '"& ord &"'"
Set rs = Conn.Execute(SQL)

If Not(rs.bof or rs.EOF) Then
Do while not rs.eof%>
<li><%=rs("nr")%>. <%=rs("artist")%> - <%=rs("cd")%> - <%=rs("nr")%> </li>
<%rs.movenext
loop
End If

Conn.Close
Set Conn = NOthing
End If
%>
Avatar billede keysersoze Guru
29. maj 2003 - 14:45 #12
erhm... mads1979 = zipper20 ????
Avatar billede zipper20 Nybegynder
29. maj 2003 - 14:48 #13
Nope... min kollega...
Avatar billede zipper20 Nybegynder
29. maj 2003 - 14:52 #14
Kan I se vad jeg skal gøre ???
Avatar billede keysersoze Guru
29. maj 2003 - 15:02 #15
din kollega? og så overtager du bare hans spørgsmål? virker mig nu lidt suspekt - husk at man ikke må have dobbeltbrugere!

Grunden til at siden er tom er at søgeresultatet er tomt - fejlen du/i snakker om kan jeg ikke få frem...

men du/i har ikke brugt tutorial'en særligt godt. For at få noget reel effekt ud af at benytte LIKE i en sql så er det en god idé at lave det som en wildcard søgning - dvs der skal benytte procent-tegn i sql;

SQL = "SELECT * FROM tabel WHERE kolonne LIKE '%" & ord & "%' or andenkolonne LIKE '%" & ord & "%'"

så det er det første der skal ændres... den fejl der opstår - hvad står der i den?
Avatar billede zipper20 Nybegynder
29. maj 2003 - 15:02 #16
På en skala fra 1 til 10, så ca. 11 Hallo ??
Avatar billede keysersoze Guru
29. maj 2003 - 15:05 #17
jeg tror ikke man får særlig meget ud af den tone...
Avatar billede zipper20 Nybegynder
29. maj 2003 - 15:08 #18
Søgeresultatet burde ikke være tomt. Vi har over 800 numre i databasen... jeg kan godt se logikken i scriptet men ikke at det ikke virker...
Avatar billede keysersoze Guru
29. maj 2003 - 15:17 #19
prøv nu engang først og fremmest at lav den ændring jeg siger... og fortæl mig samtidig hvad i søger på når der meldes fejl og hvilken fejl der meldes...
Avatar billede zipper20 Nybegynder
29. maj 2003 - 15:23 #20
Jeg har ændret det...
Jeg søger bare efter "the" ex. men siden er helt blank... ingen fejlmeldinger ... men heller ingen søgeresultater...
Avatar billede keysersoze Guru
29. maj 2003 - 15:31 #21
ok - så kom med koden som den ser ud nu
Avatar billede zipper20 Nybegynder
29. maj 2003 - 15:32 #22
Det er karadata.asp

<%@LANGUAGE="VBSCRIPT"%>

<%
If Request.Form("search") <> "" Then

ord = Request.Form("search")

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

SQL = "SELECT * FROM Karaoke WHERE titel LIKE '%" & ord & "%' or artist LIKE '%" & ord & "%'"

Set rs = Conn.Execute(SQL)

If Not(rs.bof or rs.EOF) Then
Do while not rs.eof%>
<li><%=rs("nr")%>. <%=rs("artist")%> - <%=rs("cd")%> - <%=rs("nr")%> </li>
<%rs.movenext
loop
End If

Conn.Close
Set Conn = NOthing
End If
%>
Avatar billede keysersoze Guru
29. maj 2003 - 15:45 #23
prøv dette;

<%@LANGUAGE="VBSCRIPT"%>

<%
If Request.Form("search") <> "" Then

response.write "kan du se dette?"

ord = Request.Form("search")

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("database.mdb")
Conn.Open DSN

SQL = "SELECT * FROM Karaoke WHERE titel LIKE '%" & ord & "%' or artist LIKE '%" & ord & "%'"

Set rs = Conn.Execute(SQL)

If Not(rs.bof or rs.EOF) Then
Do while not rs.eof
response.write "der blev fundet resultater i søgningen"
%>
<li><%=rs("nr")%>. <%=rs("artist")%> - <%=rs("cd")%> - <%=rs("nr")%> </li>
<%rs.movenext
loop
else
response.write "der blev ikke fundet noget"
End If

Conn.Close
Set Conn = NOthing
End If
%>

og fortæl mig hvad der så står
Avatar billede zipper20 Nybegynder
29. maj 2003 - 15:52 #24
Det er det samme... en blank side...
Avatar billede keysersoze Guru
29. maj 2003 - 15:55 #25
og nu kan jeg se hvorfor - det har absolut intet med asp at gøre men ganske almindeligt html... du/i kan ikke benytte request.form når i sender formen vha method="get"

enten skal method="post" eller også skal der bruges request.querystring
Avatar billede zipper20 Nybegynder
29. maj 2003 - 16:09 #26
Ikke helt

kan du se dette?
Microsoft OLE DB Provider for ODBC Drivers error '80004005'

[Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key 'Temporary (volatile) Jet DSN for process 0xca0 Thread 0xcc0 DBC 0xb290044 Jet'.

/karadata.asp, line 12
Avatar billede keysersoze Guru
29. maj 2003 - 16:11 #27
nu er method jo også ændret - det er jo ligesom det der skal skabe grundlaget for i det hele taget at komme videre!

ovenstående fejl kunne tyde på at databasen ikke kan findes - altså at der henvises forkert til den
Avatar billede zipper20 Nybegynder
29. maj 2003 - 16:14 #28
Okay... jeg har en connect.asp fil som i hvert fald virker... bruger den andre steder på siden. Kan jeg ikke bare smide den ind et eller andet sted ? (include)
Avatar billede keysersoze Guru
29. maj 2003 - 16:28 #29
det kommer helt an på hvordan siden er sat sammen...

ligger asp-filen (karadata.asp) i samme mappe som databasen?
Avatar billede zipper20 Nybegynder
29. maj 2003 - 16:30 #30
Nej...
site->
- db    (access)
- www  (asp / html)
Avatar billede keysersoze Guru
29. maj 2003 - 16:33 #31
så kan du heller ikke benytte Server.MapPath("database.mdb") - her skal du henvise rigtigt

Server.MapPath("../db/database.mdb")
Avatar billede zipper20 Nybegynder
29. maj 2003 - 16:39 #32
Mange tak... nu er den der...
Avatar billede keysersoze Guru
29. maj 2003 - 16:54 #33
np

og pas lige på en anden gang - du/i kan meget let ligne én og samme bruger...
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