Avatar billede cardinale Nybegynder
14. februar 2003 - 14:59 Der er 4 kommentarer og
1 løsning

Kan denne kode optimeres?

Jeg har denne asp-kode som er meget langsom at afvikle.
Det er en form som henter data fra en db - hvorefter man kan rette i dem.
Nedenstående side bliver kaldt fra retinfo_2.asp - men retinfo_3.asp tager laaaang tid om at komme frem med alle data.
Der er ikke desiderede fejl i koden - men kan det skrives bedre så det afvikles hurtigere??

Jeg har udvalgt et par ekspempler fra koden - den rigtige kode består af dropdows og textfelter der fylder over 700 linjer.

Here goes:


<form name="form1" method="post" action="retinfo_4.asp?id=<%=identifikation%>">
                            <p>
                              <input type="text" name="textfield" value="<%=rs("dias")%>">
                              Billedenavn<br>
                              <input type="text" name="textfield2" value="<%=rs("thumbnail")%>">
                              Thumbnailnavn<br>
                              <input type="text" name="textfield3" value="<%=rs("bestillingsnr")%>">
                              Bestillingsnummer<br>
                              <input type="text" name="textfield4" value="<%=rs("cdnr")%>">
                              CD-nummer<br>
<select name="select" size="1">
<option selected>-</option>
<%
strSQL = "SELECT fotograf FROM diasliste where id = " & identifikation
Set RS = objconn.Execute(strSQL)
strSQL = "SELECT fotograf FROM dropdown ORDER By id"
Set objRS = objconn.Execute(strSQL)
Do While Not objrs.EOF
If NOT objrs("fotograf")="" OR objrs("fotograf")=NULL Then
%>
<option value="<%= objrs("fotograf")%>" <% If rs("fotograf") = objrs("fotograf") Then     response.Write("selected")%>><%= objRs("fotograf") %></option>
<%
else
end if
objrs.MoveNext
loop
%>

</select>
Fotograf<br>
<option selected>-</option>
<%
strSQL = "SELECT filmtype FROM diasliste where id = " & identifikation
Set RS = objconn.Execute(strSQL)
strSQL = "SELECT filmtype FROM dropdown ORDER By id"
Set objRS = objconn.Execute(strSQL)
Do While Not objrs.EOF
If NOT objrs("filmtype")="" OR objrs("filmtype")=NULL Then
%>
<option value="<%= objrs("filmtype")%>" <% If rs("filmtype") = objrs("filmtype") Then     response.Write("selected")%>><%= objRs("filmtype") %></option>
<%
else
end if
objrs.MoveNext
loop
%>

</select>
Filmtype<br>
<select name="select28" size="1">
<option selected>-</option>
<%
strSQL = "SELECT lukketid FROM diasliste where id = " & identifikation
Set RS = objconn.Execute(strSQL)
strSQL = "SELECT lukketid FROM dropdown ORDER By id"
Set objRS = objconn.Execute(strSQL)
Do While Not objrs.EOF
If NOT objrs("lukketid")="" OR objrs("lukketid")=NULL Then
%>
<option value="<%= objrs("lukketid")%>" <% If rs("lukketid") = objrs("lukketid") Then     response.Write("selected")%>><%= objRs("lukketid") %></option>
<%
else
end if
objrs.MoveNext
loop
%>
                               
</select>
Lukketid<br>

bla bla osv osv.
Avatar billede kichian Nybegynder
14. februar 2003 - 15:20 #1
Du har MANGE åbne forbindelser på en gang.

Derudover kan du passsende sammenskrive dine SQL-sætninger, da du kun henter data fra det ene af dem.
Fx
SELECT dropdown.filmtype, diasliste.id from dropdown left join diasliste on dropdown.filmtype = diasliste.filmtype where not dropdown.filmtype is null

Hvis diasliste.id er NULL, så skal objrs(filmtype) ikke selectes.

REsten af SQL og kode kan skrives på samme måde.
Avatar billede kichian Nybegynder
14. februar 2003 - 15:21 #2
Til min SQL skal der lige tilføjes:
AND diasliste.ID = " & identifikation
Avatar billede cardinale Nybegynder
14. februar 2003 - 15:40 #3
Det med de mange åbne forbindelser på en gang - hvordan kommer jeg om ved det?

Og det eks du har givet det fatter jeg ikke noget af...
Avatar billede cardinale Nybegynder
18. februar 2003 - 16:34 #4
lukket
Avatar billede cardinale Nybegynder
18. februar 2003 - 16:34 #5
lukket
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