Avatar billede kepsus Praktikant
10. februar 2003 - 20:23 Der er 33 kommentarer og
1 løsning

søge i access via asp

hejsa jeg er hel "grøn", (hvad det her angår hehe).
Jeg har en access database med felt1, 2, 3, 4 osv. Det er nogle vare nr, tekst, salgspris, netto pris.

min ide var at folk på lokal netværket kunne spørge på databasen med asp. jeg har læst på html.dk (måske ikke nok), men kunne ikke lige finde helt ud af det. Jeg kan få fat i databasen, og bladre i den via asp, men ikke søge på den.
Avatar billede medions Nybegynder
10. februar 2003 - 20:24 #1
Avatar billede bjorn_jeppesen Nybegynder
10. februar 2003 - 20:24 #2
Har du lavet en dataadgangs side via access eller har du defineret en dataconn og et recordsæt selv?
Avatar billede kepsus Praktikant
10. februar 2003 - 20:25 #3
jeg kigger med det samee rune
Avatar billede dk_akj Nybegynder
10. februar 2003 - 20:26 #4
Har du prøvet noget alá dette ??:

vare = request.querystring("vare")
tekst = request.querystring("tekst")

set rs = conn.execute ("select * from tabelnavn where varenr = '" & vare& "' or tekst = '" & tekst & "'" )

Jeg skal have mere info for at hjælpe mere præcist.

//akj
Avatar billede medions Nybegynder
10. februar 2003 - 20:30 #5
kepsus> ;o)
Avatar billede kepsus Praktikant
10. februar 2003 - 20:52 #6
okay nu tror jeg den er der :-), men hvordan får man sin private iis, til at starte med etellerandet.htm
Avatar billede kepsus Praktikant
10. februar 2003 - 21:02 #7
hvad gør jeg galt
Avatar billede medions Nybegynder
10. februar 2003 - 21:17 #8
Det gør du under administrativ tools -> PWS...

//>Rune
Avatar billede kepsus Praktikant
10. februar 2003 - 21:27 #9
hmm, jeg har kun xp pro, på denne maskine, kan det så ikke lade sige gøre
Avatar billede medions Nybegynder
10. februar 2003 - 21:29 #10
Jov...

Men prøv at opret et nyt spm under XP kategorien om det... -jeg kender desvære ik' til XP, kun Win2k ;o)

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 08:19 #11
den skriver denne fejl
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
[Microsoft][ODBC Microsoft Access-driver] Der er for få parametre. Der var ventet 1.
/search.asp, line 35


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)
Avatar billede kepsus Praktikant
11. februar 2003 - 08:20 #12
koden er
<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat</title>
</head><body>

<%
' Henter værdien fra soeg.htm
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("default.htm")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE"
strSQL = strSQL & " (felt1 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt2 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt3 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt4 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt5 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt6 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt7 LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("kkk.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<p>Søgeresultat</p>"
    Response.Write "<table border=1>"
    Response.Write "<tr><th>felt1</th><th>felt2</th><th>felt3</th><th>felt4</th></tr>felt5</th></tr>felt6</th></tr>felt7</th></tr>"
    Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("felt1") & "</td>"
        Response.Write "<td>" & rs("Adresse") & "</td>"
        Response.Write "<td>" & rs("Bynavn") & "</td>"
        Response.Write "<td>" & rs("Beskrivelse") & "</td></tr>"
        rs.MoveNext
    Loop
    Response.Write "</table>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End If

' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>

</body></html>
Avatar billede kepsus Praktikant
11. februar 2003 - 08:22 #13
undskyld, undskyld, det var spdan den ser ud
<% Response.Buffer = True %>
<html><head>
<title>Søgeresultat</title>
</head><body>

<%
' Henter værdien fra soeg.htm
strKeyword = Trim(Request.Form("Keyword"))

If Len(strKeyword) = 0 Then
    ' Hvis der ikke er skrevet i feltet
    Response.Clear
    Response.Redirect("default.htm")
Else
    ' Hvis der er skrevet i feltet
    strKeyword = Replace(strKeyword,"'","''")
End If

' Opbygger en dynamisk SQL streng
strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE"
strSQL = strSQL & " (felt1 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt2 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt3 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt4 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt5 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt6 LIKE '%" & strKeyword & "%')"
strSQL = strSQL & " OR (felt7 LIKE '%" & strKeyword & "%')"

' Skaber DSNLess forbindelse til DBen
strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("kkk.mdb")
Set myConn = Server.CreateObject("ADODB.Connection")
myConn.Open strDSN

' Skaber et recordset udfra SQL strengen
Set rs = myConn.Execute(strSQL)
If Not (rs.BOF Or rs.EOF) Then
    ' Hvis der er fundet poster på søgningen
    Response.Write "<p>Søgeresultat</p>"
    Response.Write "<table border=1>"
    Response.Write "<tr><th>felt1</th><th>felt2</th><th>felt3</th><th>felt4</th></tr>felt5</th></tr>felt6</th></tr>felt7</th></tr>"
    Do While Not rs.EOF
        Response.Write "<tr><td>" & rs("felt1") & "</td>"
        Response.Write "<td>" & rs("felt2") & "</td>"
        Response.Write "<td>" & rs("felt3") & "</td>"
        Response.Write "<td>" & rs("felt4") & "</td></tr>"
        rs.MoveNext
    Loop
    Response.Write "</table>"
Else
    ' Hvis der ikke er fundet poster på søgningen
    Response.Write "<p>Der er ikke fundet noget på denne søgning</p>"
End If

' Rydder op efter os
myConn.Close
Set myConn = Nothing
%>

</body></html>
Avatar billede kepsus Praktikant
11. februar 2003 - 10:08 #14
juhuu, jeg har løst det, men arg ja nu fik jeg et andet problem (du skal nok få point rune), når jeg spørger på et nr, kan jeg så begrænse hvor mange records den kommer med, da den søger på alt det er ligner det nr, (det skal den også), men skal kun komme med de 50 nærmeste
Avatar billede medions Nybegynder
11. februar 2003 - 11:17 #15
Ja, du kan skrive:

strSQL = "SELECT TOP 50 * FROM tblTabelNavn"
-altså brug TOP n

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 11:21 #16
mange tak
Avatar billede medions Nybegynder
11. februar 2003 - 11:22 #17
Thx 4 Poinz

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 11:24 #18
tør jeg spørge om en ting mere ?? 50 point ?
Hvis jeh nu laver 2 boxe
<body>
var nr
<form method="POST" action="search.asp">
  <p><input type="text" name="Keyword" size="20"><br>
  <input type="submit" value="Søg" name="Action"></p>
tekst
<form method="POST" action="search.asp">
  <p><input type="text" name="Keyword1" size="30"><br>
  <input type="submit" value="Søg" name="Action"></p>
</form>
</body>
</html>
<body>

hvordan får jeg den til at søge på keyword1??

i asp står der
strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE"
strSQL = strSQL & " (felt1 LIKE '" & strKeyword & "%')"
strSQL = strSQL & " (felt2 LIKE '" & strKeyword1 & "%')"
og så kræver det at der er indtastet i begge felter og det er ikke meningen
Avatar billede medions Nybegynder
11. februar 2003 - 11:27 #19
strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE"
strSQL = strSQL & " (felt1 LIKE '" & strKeyword & "%')"
strSQL = strSQL & " (felt2 LIKE '" & Request.Form("KeyWord1") & "%')"

Er det sådan du mener?

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 11:34 #20
ja men så skriver den
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er gjort ugyldig brug af ".", "!" eller "()". i forespørgselsudtrykket "(felt1 LIKE '%') (felt2 LIKE 'leje%')".
/search.asp, line 36


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)

Side:
POST 35 bytes to /search.asp

POST Data:
Keyword=&Action=S%F8g&Keyword1=leje

Klokkeslæt:
11. februar 2003, 11:31:58


Yderligere oplysninger:
Microsoft Support
Avatar billede medions Nybegynder
11. februar 2003 - 11:38 #21
Hmm hvornår sker den fejl?

//>Rune
Avatar billede medions Nybegynder
11. februar 2003 - 11:39 #22
Ahh, undskyld, det er fordi du mangler et OR...

strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE"
strSQL = strSQL & " (felt1 LIKE '" & strKeyword & "%') OR "
strSQL = strSQL & " (felt2 LIKE '" & Request.Form("KeyWord1") & "%')"

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 11:45 #23
ja men så tager alle records med tekst, hvis jeg søger på keyword og der er blank ved keyword2, tager den alle keyword2, lyder måske lidt kryptisk
Avatar billede medions Nybegynder
11. februar 2003 - 11:50 #24
Ahh ok... Så skal du valider om der er noget i felter først...

strKeyWord1 = Replace(Request.Form("Keyword1"), "'", "''")
strSQL = "SELECT ID, felt1, felt2, felt3, felt4, felt5, felt6, felt7 FROM kkk1 WHERE"
If strKeyWord <> "" Then
strSQL = strSQL & " (felt1 LIKE '" & strKeyword & "%')"
End If

If strKeyWord <> "" And strKeyWord1 <> "" Then
  strSQL = strSQL & " OR"
End If

If strKeyWord1 <> "" Then
strSQL = strSQL & " (felt2 LIKE '" & Request.Form("KeyWord1") & "%')"
End If

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 11:50 #25
og hvor skal den være den der strSQL = "SELECT TOP 50 * FROM tblTabelNavn
Avatar billede medions Nybegynder
11. februar 2003 - 11:54 #26
strKeyWord1 = Replace(Request.Form("Keyword1"), "'", "''")
strSQL = "SELECT TOP 50 * FROM kkk1 WHERE"
If strKeyWord <> "" Then
strSQL = strSQL & " (felt1 LIKE '" & strKeyword & "%')"
End If

If strKeyWord <> "" And strKeyWord1 <> "" Then
  strSQL = strSQL & " OR"
End If

If strKeyWord1 <> "" Then
strSQL = strSQL & " (felt2 LIKE '" & Request.Form("KeyWord1") & "%')"
End If

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 11:59 #27
nu har gjort som du sagde (skrev) og det virker fint hvis jeg taster noget i keyword1, men hvis jeg taster noget i keyword skriver den
Fejltype:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][ODBC Microsoft Access-driver] Der er en syntaksfejl i WHERE-delsætningen.
/search.asp, line 34


Browsertype:
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)

Side:
POST 35 bytes to /search.asp

POST Data:
Keyword=6205&Action=S%F8g&Keyword1=
Avatar billede kepsus Praktikant
11. februar 2003 - 11:59 #28
men vi er tæt på nu
Avatar billede kepsus Praktikant
11. februar 2003 - 13:14 #29
har du tid til at hjælpe mig med det sidste ??
Avatar billede medions Nybegynder
11. februar 2003 - 13:16 #30
Prøv at lad mig se den kode du har nu...

//>Rune
Avatar billede kepsus Praktikant
11. februar 2003 - 13:26 #31
undskyld, det var mig der har lavet en fejl!!!
Avatar billede kepsus Praktikant
11. februar 2003 - 13:27 #32
jeg opretter et nyt spm, så kan du fp poiny, ok
Avatar billede kepsus Praktikant
11. februar 2003 - 13:27 #33
få point
Avatar billede medions Nybegynder
11. februar 2003 - 13:27 #34
Ok :-)

//>Rune
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