tcadieux
12-08-2006, 02:15 AM
The below code works, but becuase i have about 800 items in the Glossary, the page takes about 5-7 seconds to load......is there a way I could optimise the below code?
'<---------- DO NOT EDIT THIS INFORMATION
IF Not objPagingRS.EOF THEN
Article=objPagingRS("Article")
'****************************************************************
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open ("Glossary.mdb")
sQUERY="SELECT Glossary.GlossaryID, Glossary.Term, Glossary.Desc FROM Glossary;"
set rsDefinitions=Server.CreateObject("ADODB.recordset")
rsDefinitions.Open sQUERY, conn
defArr = Array()
While Not rsDefinitions.EOF
If Not IsNull(rsDefinitions("Term")) Or rsDefinitions("Term") <> "" Then
If in_array(rsDefinitions("Term"),defArr) = False Then
Redim Preserve defArr(i)
defArr(i) = rsDefinitions("Term") & "," & rsDefinitions("GlossaryID")
i=i+1
'Response.Write rsDefinitions("Glossary_Term_E") & "<br>"
End If
End If
rsDefinitions.MoveNext
Wend
rsDefinitions.close
conn.close
'****************************************************************
Response.write(CreateLink(Article,defArr))
Function CreateLink(str, arr)
temp = str
For i=0 To Ubound(arr)
If InStr(arr(i),",") Then
iWhere=Instr(arr(i),",")
URL=Mid(arr(i),iWhere+1)
newTerm=LEFT(arr(i),iWhere-1)
END IF
If InStr(LCASE(str),LCASE(newTerm)) Then
'temp = Replace(temp,newTerm, "<a href='"&Url &"'>" & lCASE(newTerm) & "</a>",1, -1, vbTextCompare)
temp = Highlight(temp, newTerm, "<a href='glossary.asp?id="&Url &"' Class='Underline' >", "</a>")
End If
Next
CreateLink = temp
End Function
Function in_array(element, arr)
For i=0 To Ubound(arr)
If Trim(arr(i)) = Trim(element) Then
in_array = True
Exit Function
Else
in_array = False
End If
Next
End Function
Function Highlight(temp, newTerm, strBefore, strAfter)
Set re = New RegExp
re.Pattern="\b("&newTerm&")\b"
re.IgnoreCase=True
re.Global=True
strOutput=re.Replace(temp,strBefore&"$1"&strAfter)
'Response.Write("<pre>" & strOutput & "</pre>")
Highlight=strOutput
End Function
'<---------- DO NOT EDIT THIS INFORMATION
IF Not objPagingRS.EOF THEN
Article=objPagingRS("Article")
'****************************************************************
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open ("Glossary.mdb")
sQUERY="SELECT Glossary.GlossaryID, Glossary.Term, Glossary.Desc FROM Glossary;"
set rsDefinitions=Server.CreateObject("ADODB.recordset")
rsDefinitions.Open sQUERY, conn
defArr = Array()
While Not rsDefinitions.EOF
If Not IsNull(rsDefinitions("Term")) Or rsDefinitions("Term") <> "" Then
If in_array(rsDefinitions("Term"),defArr) = False Then
Redim Preserve defArr(i)
defArr(i) = rsDefinitions("Term") & "," & rsDefinitions("GlossaryID")
i=i+1
'Response.Write rsDefinitions("Glossary_Term_E") & "<br>"
End If
End If
rsDefinitions.MoveNext
Wend
rsDefinitions.close
conn.close
'****************************************************************
Response.write(CreateLink(Article,defArr))
Function CreateLink(str, arr)
temp = str
For i=0 To Ubound(arr)
If InStr(arr(i),",") Then
iWhere=Instr(arr(i),",")
URL=Mid(arr(i),iWhere+1)
newTerm=LEFT(arr(i),iWhere-1)
END IF
If InStr(LCASE(str),LCASE(newTerm)) Then
'temp = Replace(temp,newTerm, "<a href='"&Url &"'>" & lCASE(newTerm) & "</a>",1, -1, vbTextCompare)
temp = Highlight(temp, newTerm, "<a href='glossary.asp?id="&Url &"' Class='Underline' >", "</a>")
End If
Next
CreateLink = temp
End Function
Function in_array(element, arr)
For i=0 To Ubound(arr)
If Trim(arr(i)) = Trim(element) Then
in_array = True
Exit Function
Else
in_array = False
End If
Next
End Function
Function Highlight(temp, newTerm, strBefore, strAfter)
Set re = New RegExp
re.Pattern="\b("&newTerm&")\b"
re.IgnoreCase=True
re.Global=True
strOutput=re.Replace(temp,strBefore&"$1"&strAfter)
'Response.Write("<pre>" & strOutput & "</pre>")
Highlight=strOutput
End Function