16. januar 2002 - 10:47Der er
23 kommentarer og 1 løsning
udklip af søgening,,,
hej.
jeg har en db hvor jeg laver nogle søgninger i. Det jeg godt kunne tænke mig var at der i dbén hvor tekststrengen matches, der udskrives ca. 30 tegn der viser den sammenhæng søgningen er fundet i. (som på google).
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.
Øhh, nej. Jeg glemte et par ting. Du bør lige indsætte en check for om intPos er 0, bare for en sikkerheds skyld. Og så er der også lige det med store/små bogstaver :-) Ny version...
strSoeg = strKeyword intPos = inStr(LCase(rs(\"html\")), LCase(strSoeg)) If intPos > 0 Then strTemp = Mid(rs(\"html\"), (intPos - 10), 13) response.write strTemp End If
If intPos > 0 And intPos >= intNum Then strTemp = Mid(rs(\"html\"), (intPos - intNum), 13) ElseIf intPos > 0 And intPos < intNum Then intNum = intPos strTemp = Mid(rs(\"html\"), intNum, 13) End If
If Len(strKeyword) = 0 Then \' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect(\"index.asp\") Else \' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,\"\'\",\"\'\'\") End If
\' Opbygger en dynamisk SQL streng strSQL = \"SELECT referid, html, filename FROM htmlcode WHERE\" strSQL = strSQL & \" (html LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (filename LIKE \'%\" & strKeyword & \"%\')\"
\'find de aktuelle poster omkring....
\' Skaber et recordset udfra SQL strengen Set rs = cn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then \' Hvis der er fundet poster på søgningen Response.Write \"<table border=1>\" Response.Write \"<tr><th>Søgeresultat</th></tr>\" Do While Not rs.EOF SQL2 = \"SELECT title, id FROM html WHERE id = \"&rs(0)&\"\" set rs2 = cn.execute(SQL2) Response.Write \"<tr><td>\" & \"<a href=\"\"index.asp?id=\" & (rs2(1)) & \"\"\">\" & (rs2(0)) & \"</a></td>\" rs2.close Response.Write \"<tr><td>\" & rs(\"html\") & \"</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
Du er nødt til at smide min kode indenfor din If blok.
Da den ligger i bunden af koden, og du allerede har kørt dit recordset igennem med din do-while, har du ikke noget recordset når du når ned til koden i bunden.
If Len(strKeyword) = 0 Then \' Hvis der ikke er skrevet i feltet Response.Clear Response.Redirect(\"index.asp\") Else \' Hvis der er skrevet i feltet strKeyword = Replace(strKeyword,\"\'\",\"\'\'\") End If
\' Opbygger en dynamisk SQL streng strSQL = \"SELECT referid, html, filename FROM htmlcode WHERE\" strSQL = strSQL & \" (html LIKE \'%\" & strKeyword & \"%\')\" strSQL = strSQL & \" OR (filename LIKE \'%\" & strKeyword & \"%\')\"
\'find de aktuelle poster omkring....
\' Skaber et recordset udfra SQL strengen Set rs = cn.Execute(strSQL) If Not (rs.BOF Or rs.EOF) Then \' Hvis der er fundet poster på søgningen Response.Write \"<table border=1>\" Response.Write \"<tr><th>Søgeresultat</th></tr>\"
Do While Not rs.EOF
SQL2 = \"SELECT title, id FROM html WHERE id = \"&rs(0)&\"\" set rs2 = cn.execute(SQL2) Response.Write \"<tr><td>\" & \"<a href=\"\"index.asp?id=\" & (rs2(1)) & \"\"\">\" & (rs2(0)) & \"</a></td>\" rs2.close
If intPos > 0 And intPos >= intNum Then strTemp = Mid(rs(\"html\"), (intPos - intNum), 13) ElseIf intPos > 0 And intPos < intNum Then intNum = intPos strTemp = Mid(rs(\"html\"), intNum, 13) End If response.write strTemp response.write\"</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
rs.close %>
men jeg får fejlmeddelelsen:
Microsoft VBScript runtime error \'800a0005\'
Invalid procedure call or argument: \'Mid\'
/webeditor/includefunctions/search-www.shtm, line 43
- jeg kan ikke lige helt gennemskue hvad der sker.
Det antal karakterer der skal være foran, er intNum. - intNum er enten 10 - eller den position som strengen du søger efter findes i.
13 er det antal karakterer den skal returnere fra start positionen. - Startpositionen er enten intPos minus intNum - eller = intPos, altså positionen som strengen findes i
Hvis der ikke er 13 karakterer fra startpositionen, returnerer den blot det antal karakterer der nu er.
Nu genererer den ikke fejl mere. jeg er godt nok ked af at sige det men jeg får stadig væk ikke skrevet noget ud... suk. nå men tak for dine forsøg på at hjælpe. Det kan være jeg finder ud af det på et tidspunkt.
Alle de steder der står strStreng i mit eksempel, skal du udskifte med rs(\"html\") - jeg har ikke et recordset liggende med det navn og feltnavn, så jeg har brugt en variabel i stedet.
Hvis du ikke har gjort det, vil den aldrig udskrive noget :-)
- nu fandt jeg løsningen. rigtig mange tak for hjælpen.!
Synes godt om
Ny brugerNybegynder
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.