21. april 2002 - 16:58Der er
40 kommentarer og 1 løsning
Fejl i søgning
Hvad går galt her? Jeg vil så gerne kunne lave en søgning med 2 (eller flere søgefelter) men det er ikke lykkedes endnu. Nedenstående burde kunne bruges, men det virker ikke. DSN forbindelsen er ok.
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("search3.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng SQL=con.Execute("SELECT * FROM Bildatabase WHERE Bilmaerke='"+Bilmaerke+"' AND Aargang='"+Aargang+"'")
' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' 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>Bilmærke</th><th>Årgang</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Aargang") & "</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 %>
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg mener at have gjort som eagleeye beskrev, men der sker ingen ting. Ikke engang en fejlmeddelelse! Mht. til online.dk's kommentar, så er det en reminisens fra et gammelt script. Kan jeg bare stryge det?
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("search3.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' Opbygger en dynamisk SQL streng strSQL = "SELECT * FROM Bildatabase WHERE Bilmaerke='"&Bilmaerke&"' AND Aargang='"&Aargang&"" ' 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>Bilmærke</th><th>Årgang</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Aargang") & "</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 %>
Som online-help.dk lige kom med så skal du fjerne disse linier:
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("search3.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' Opbygger en dynamisk SQL streng strSQL = "SELECT * FROM Bildatabase WHERE Bilmaerke='" & Bilmaerke & "' AND Aargang=" & Aargang & "" ' 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>Bilmærke</th><th>Årgang</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Aargang") & "</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>
men det giver følgende fejl
Microsoft VBScript compilation error '800a0409'
Unterminated string constant
/database/search3.asp, line 20
strSQL = "SELECT * FROM Bildatabase WHERE Bilmaerke='" & Bilmaerke & "' -----------------------------------------------------------------------^
Du havde ret med hensyn til <enter>. Men nu kan scriptet gud hjælpe mig ikke finde tabellen Bildatabase. Jeg ved, at den ligger i db'en og at navnet er stavet korrekt!
ADODB.Recordset.1 error '80004005'
SQLState: S0002 Native Error Code: -1305 [INTERSOLV][ODBC SequeLink driver][ACCESS][Microsoft][ODBC Microsoft Access Driver] The Microsoft Jet database engine cannot find the input table or query 'Bildatabase'. Make sure it exists and that its name is spelled correctly.
øh det virker lidt underligt ?? den har da virker på et tidspunkt. Jeg ved ikke om det hjælper noget men prøv at sættet ; ind til sidst i SQL-sætningen:
strSQL = "SELECt.... &"' AND Aargang & ";"
Den er ikke casesenativ så det skal være bildatabase ??
Det var ikke løsningen:( Min DSN-forbindelse burde virke. Den virker i hvert fald på følgende script, men som du kan se, henter det kun søgeresultat fra en form. Jeg ville gerne kunne lave 2 eller flere søgeforms i kombination!
<% ' Henter værdien fra search.htm strKeyword = Trim(Request.Form("Keyword"))
If Len(strKeyword) = 0 Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("search.htm") Else ' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT ID, Fornavn, Efternavn, Telefon, Foedselsdato FROM personer WHERE" strSQL = strSQL & " (Fornavn LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Efternavn LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Telefon LIKE '%" & strKeyword & "%')" strSQL = strSQL & " OR (Foedselsdato LIKE '%" & strKeyword & "%')"
' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' 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>Fornavn</th><th>Efternavn</th><th>Telefon</th><th>Foedselsdato</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("Fornavn") & "</td>" Response.Write "<td>" & rs("Efternavn") & "</td>" Response.Write "<td>" & rs("Telefon") & "</td>" Response.Write "<td>" & rs("Foedselsdato") & "</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 %>
Har du for sjov prøvet at indsætte en strSQL som denne på den nye side i stedet for den rigtige, du kan jo bare udkommentere den rigtige SQL-sætning. Bare for testens skyld?: strSQL = "SELECT * FROM personer WHERE" strSQL = strSQL & " (Fornavn LIKE '%" & Bilmaerke & "%')" strSQL = strSQL & " OR (Efternavn LIKE '%" & Aargang & "%')
og så angive et fornavn i Bilmaerke og Efternavn i Aargang. Hvis den også fejler på den nye side så er der nog noget ved den connection som ikke virker...
Kan nogen rette ovenstående til (som virker), så der er et søgefelt til hver af de 4 feltnavne. (Fornavn, Efternavn, Telefon og Foedselsdato). Selve søgeformularen med 4 felter kan jeg godt lave, men det kniber med asp-siden.
If (Len(strFornavn) = 0) OR (Len(strEfternavn) = 0) OR (Len(strTelefon) = 0) OR (Len(strFoedselsdato) = 0) Then ' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect("search.htm") Else ' Hvis der er skrevet i feltet strFornavn = Replace(strFornavn,"'","''") strEfternavn = Replace(strEfternavn,"'","''") strTelefon = Replace(strTelefon,"'","''") strFoedselsdato = Replace(strFoedselsdato,"'","''") End If
' Opbygger en dynamisk SQL streng strSQL = "SELECT ID, Fornavn, Efternavn, Telefon, Foedselsdato FROM personer WHERE" strSQL = strSQL & " (Fornavn LIKE '%" & strFornavn & "%')" strSQL = strSQL & " OR (Efternavn LIKE '%" & strEfternavn & "%')" strSQL = strSQL & " OR (Telefon LIKE '%" & strTelefon & "%')" strSQL = strSQL & " OR (Foedselsdato LIKE '%" & strFoedselsdato & "%')"
' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' 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>Fornavn</th><th>Efternavn</th><th>Telefon</th><th>Foedselsdato</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("Fornavn") & "</td>" Response.Write "<td>" & rs("Efternavn") & "</td>" Response.Write "<td>" & rs("Telefon") & "</td>" Response.Write "<td>" & rs("Foedselsdato") & "</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 %>
Dit script virker bare perfekt!! Kan det laves, så man ikke behøver at skrive i alle felter? Jeg vil gerne endnu engang takke dig for din ihærdige indsats. Skal nok fyre nogle points af:)
Som du måske har gættet, så vil jeg gerne kunne lave en bildatabase. Det tror jeg også jeg kan ud fra det, som du har lavet. Men...., ved du hvordan man evt. kan lave 2 drop-down bokse med km fra / km til (eller pris fra/pris til)? , der kan bruges i dit script. Som du kan se - når man rækker folk en lillefinger, så ta'r de hele armen!
Jeps nu ved jeg ikke helt hvordan du har gemt de oplysninger altså pris og km..
Har du en kolonne som hedder Pris og en som hedder Km..
Du kan jo lave dem sådan her:
<select name="km"> <option value="10000 AND 50000" selected>10.000-50.000 Km</option> <option value="50000 AND 100000">50.000-100.000 Km</option> <option value="100000 AND 200000">100.000-200.000 Km</option> <option value="200000 AND 300000">200.000-300.000 Km</option> </select>
på samme måde med pris <select name="pris"> <option value="0 AND 10000" selected>Op til 10.000 Kr</option> <option value="10000 AND 50000" selected>10.000-50.000 Kr</option> <option value="50000 AND 100000">50.000-100.000 Kr</option> <option value="100000 AND 200000">100.000-200.000 Kr</option> <option value="200000 AND 300000">200.000-300.000 Kr</option> </select>
Ja,ja, det var lige nøjagtig det jeg mente. Jeg bliver nødt til at vente til i morgen med at prøve det. Gider du hænge på i morgen sidst på eftermiddagen? Jeg bliver nødt til at arbejde i aften!
' Opbygger en dynamisk SQL streng strSQL = "SELECT ID, Bilmaerke, Model, Aargang, Km , Pris FROM biler WHERE" strSQL = strSQL & " (Bilmaerke LIKE '%" & strBilmaerke & "%')" strSQL = strSQL & " AND (Model LIKE '%" & strModel & "%')" strSQL = strSQL & " AND (Aargang LIKE '%" & strAargang & "%')" strSQL = strSQL & " AND (Km BETWEEN " & strKm & ")" strSQL = strSQL & " AND (Pris BETWEEN " & strPris & ")"
' Skaber DSN forbindelse til DBen Set myConn = Server.CreateObject("ADODB.Connection") myConn.Open "DSN=riishojwebsoftdkdsn"
' 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>Bilmærke</th><th>Model</th><th>Årgang</th><th>Km</th><th>Pris</th></tr>" Do While Not rs.EOF Response.Write "<tr><td>" & rs("Bilmaerke") & "</td>" Response.Write "<td>" & rs("Model") & "</td>" Response.Write "<td>" & rs("Aargang") & "</td>" Response.Write "<td>" & rs("Km") & "</td>" Response.Write "<td>" & rs("Km") & "</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>
Ligegyldig hvad jeg skriver i formen kommer følgende fejl:
ADODB.Recordset.1 error '80004005'
SQLState: 07001 Native Error Code: -3010 [INTERSOLV][ODBC SequeLink driver][ACCESS][Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 3.
Den sidste fejl har jeg ikke set før jo 80004005 fordi databasen er readonly men der plejer at være en tekst streng til som siger read-only eller sådan.
Kan det ikke tænkes at den server hvor din database ligge er nede i øjeblikket?
Hurra, nu virker det hele igen, også dit sidste forslag til biler. Jeg tror virkelig, at jeg har fået et godt redskab at arbejde videre med. Tusind tak. jeg tror, vi slutter her. Jeg vil gerne give dig en masse point. Hvad synes du er rimeligt?
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.