Hej!
Undrar om det finns någon som skulle vilja hjälpa mig att optimera denna kod. Koden fungerar precis som jag vill men den är otroligt inefektiv och prestanda krävande (tror jag iallfall). Mina ASP kunskaper sträcker sig inte längre än till denna typ av kod så därför skulle jag vara tacksam om någon ville hjälpa mig att fixa till den så att jag vet till nästa gång. Har sökt både här och där efter tips men inte fått till det då. Jag tror att man ska skapa lite arrays och dyl. för att få det att bli bra/snyggt men jag vet inte hur. Databasen finns bifogad i en ZIP-fil här i inlägget.
Tack på förhand!
<%
s_db_name = "db"
s_db_path = "E:\_array\" & s_db_name & ".mdb"
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & s_db_path & ";"
s_cat_open = Request("f_cat_open")
If s_cat_open <> "" Then
v_cat_open_array = split(s_cat_open, ",")
For i = 0 To UBound(v_cat_open_array)
If i=0 Then s_cat_main_value = CInt(v_cat_open_array(i))
If i=1 Then s_cat_sub_value = CInt(v_cat_open_array(i))
If i=2 Then s_cat_item_value = CInt(v_cat_open_array(i))
Next
End If
SQL = "SELECT d_cat_main_value FROM tbl_cat_main"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
s_count = 0
s_cat_main_value = ""
Do Until rs.EOF
If Not s_cat_main_value = rs("d_cat_main_value") Then
s_count = s_count +1
End If
s_cat_main_value = rs("d_cat_main_value")
rs.MoveNext
Loop
End If
Response.Write "<FORM action=""" & Request.ServerVariables ("SCRIPT_NAME") & """ method=""POST"" name=""f_cat"">"
Response.Write "<SELECT name=""f_cat_open"">"
Response.Write "<OPTION value="""">Välj:</OPTION>"
SQL = "SELECT d_cat_main_value FROM tbl_cat_main ORDER BY d_cat_main_value ASC"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
v_array = rs.GetRows()
End If
For i = 0 To s_count -1
SQL = "SELECT d_cat_main_value, d_cat_main_text FROM tbl_cat_main WHERE d_cat_main_value = " & v_array(0,i) & " ORDER BY d_cat_main_value ASC"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
Response.write "<OPTGROUP label=""" & rs("d_cat_main_text") & """ style=""background-color: #EFEFEF;"">"
SQL = "SELECT d_cat_sub_type, d_cat_sub_value, d_cat_sub_text FROM tbl_cat_sub WHERE d_cat_main_value = " & v_array(0,i) & " ORDER BY d_cat_sub_value ASC"
Set rs = Conn.Execute(SQL)
If Not rs.EOF Then
Do Until rs.EOF
If rs("d_cat_sub_text") <> "" Then
If IsNumeric(rs("d_cat_sub_value")) Then
If rs("d_cat_sub_type") = 1 Then
Response.write "<OPTGROUP label=""" & rs("d_cat_sub_text") & """ style=""background-color: #FFFFFF;"">"
SQL2 = "SELECT d_cat_item_value, d_cat_item_text FROM tbl_cat_item WHERE d_cat_main_value = " & v_array(0,i) & " AND d_cat_sub_value = " & rs("d_cat_sub_value") & " ORDER BY d_cat_item_value ASC"
Set rs2 = Conn.Execute(SQL2)
If Not rs2.EOF Then
Do Until rs2.EOF
If rs2("d_cat_item_text") <> "" Then
If IsNumeric(rs2("d_cat_item_value")) Then
If CInt(s_cat_main_value) = v_array(0,i) And CInt(s_cat_sub_value) = rs("d_cat_sub_value") And CInt(s_cat_item_value) = rs2("d_cat_item_value") Then
Response.write "<OPTION value=""" & v_array(0,i) & "," & rs("d_cat_sub_value") & "," & rs2("d_cat_item_value") & """ style=""background-color: #FFFFFF;"" selected>" & rs2("d_cat_item_text") & "</OPTION>"
Else
Response.write "<OPTION value=""" & v_array(0,i) & "," & rs("d_cat_sub_value") & "," & rs2("d_cat_item_value") & """ style=""background-color: #FFFFFF;"">" & rs2("d_cat_item_text") & "</OPTION>"
End If
End If
End If
rs2.MoveNext
Loop
Response.Write "</OPTGROUP>"
End If
ElseIf rs("d_cat_sub_type") = 2 Then
Response.Write "<OPTION value=""" & v_array(0,i) & "," & rs("d_cat_sub_value") & """ style=""background-color: #FFFFFF;"">" & rs("d_cat_sub_text") & "</OPTION>"
End If
End If
End If
rs.MoveNext
Loop
End If
Response.Write "</OPTGROUP>"
End If
Next
Response.Write "</SELECT>"
Response.Write "<INPUT type=""SUBMIT"" name=""f_cat_submit"" value=""Öppna"">"
Response.Write "</FORM>"
Conn.Close
Set Conn = Nothing
%>
Tack för att ni orkade titta lite. Att jag inte har deklarera mina variablar och konstanter beror på att jag alltid gör det när koden är klar. Hmm, inner join... får söka lite här på forumet tror jag. Har aldrig använd det förut.