hej! Kanske något sånt här? Jag skulle undvika att öppna 2 recordset för ett onödigt anrop mot databasen och istället göra ungefär såhär (exemplet sakna massa html-kod).. ännu ett litet tips om fält när vi snackar prestand .. Loop problem!
Litet bekymmer ang en loop.
Ska i första loopen hämta ut värden baserat på omr fältet.
I nästa loop ska jag hämta ut uppgifterna på varje omr.
Men, den skriver ut omr två gånger, vilket den inte ska göra.
Någon som ser vad jag har gjort för fel?
<%
set kontakter = server.createObject("ADODB.recordset")
kontakter.open "SELECT * FROM kontakter WHERE agare='seals'", conn, 1
do while not kontakter.eof%>
<tr>
<td class="bText" valign="top">
<b><%= kontakter("omr")%></b><br>
<%
set kontakt = server.createObject("ADODB.recordset")
kontakt.open "SELECT * FROM kontakter WHERE omr='"&kontakter("omr")&"'",conn,1
Do until kontakt.EOF
%>
<%= kontakt("bolag") %><br>
<%= kontakt("namn") %><br>
"><%= kontakt("epost") %><br>
<%= kontakt("telefon") %>
<p>
<%
kontakt.MoveNext
loop
%>
</td>
</tr>
<tr>
<td><img src="/images/spacer.gif" border="0" width="1" height="10"></td>
</tr>
<%
kontakter.moveNext
loop
kontakter.close
MvH
mariaSv: Loop problem!
<%
Dim rsOmr
Dim fldOmr
Dim rsInfo
Dim fldBolag
Dim fldNamn
Dim fldEPost
Dim fldTelefon
set rsOmr = server.createObject("ADODB.recordset")
set rsInfo = server.createObject("ADODB.recordset")
rsOmr.open "SELECT * FROM kontakter WHERE agare='seals'", conn, 1
Set fldOmr = rsOmr("omr")
Do Until rsOmr.eof%>
<tr>
<td class="bText" valign="top">
<%= fldOmr %><br>
<%
rsInfo.open "SELECT * FROM kontakter WHERE omr='" & fldOmr & "'",conn,1
Set fldBolag = rsInfo("bolag")
Set fldNamn = rsInfo("namn")
Set fldEPost = rsInfo("epost")
Set fldTelefon = rsInfo("telefon")
Do until rsInfo.EOF
%>
<%= fldBolag %><br>
<%= fldNamn %><br>
<%= fldEPost %><br>
<%= fldTelefon %>
<p>
<%
rsInfo.MoveNext
loop
rsInfo.Close
%>
</td>
</tr>
<tr>
<td><img src="/images/spacer.gif" border="0" width="1" height="10"></td>
</tr>
<%
rsOmr.moveNext
loop
rsOmr.closeSv: Loop problem!
Nedan kontrollerar du när den loopat igenom hela gruppen x, och det kommer en ny grupp - skrivs detta ut och därefter fortsätter den. På så sätt kan du hantera det på ett snyggt sätt. Du kanske behöver ett speciellt kriteria om det är en viss ägare och då kan du göra det i just den kodraden...
<code>
Set con = Server.Createobject("adodb.connection")
con.Open "mindsn","uid","pwd"
searchText = "seals"
sql = "select * from kontakter where agare = '" & searchText & "' order by agare, omr"
Set rst=Con.Execute(sql)
Do While Not rst.Eof
If rst("agare") <> oldagare Then
oldagare = rst("agare")
' ny grupp, ny rubrik
Response.Write "<b>" & rst("agare") & "</b><br>"
End If
' printa posten
Response.Write "<td>"
Response.Write rst("bolag") & " - "
Response.Write rst("agare")
Response.Write "</td>"
rst.MoveNext
If Not rst.Eof then oldagare = rst("agare")
Loop
Rst.Close
Set Con = Nothing
</code>
<b>Obs!</b>
Bör även påpeka att Andreas tips ovan med Set x = ... är bra, för då har du redan deklarerat upp fältnamnen och när du går in i loopen så tjänar du tid på att slippa slå upp och hämta datat i specificerat fält. Vet man vad man håller på med, så är det ännu snabbare att skriva set x= rst(2), istället för namnet.
/PelleSv: Loop problem!
fld.value är ett litet snäpp snabbare.. blir ingen onödig overhead när iis'n skall slå upp vilket som är default egenskapen fr objektet ..
Dessutom skall man undvika * av två anledingar:
1) Möjligheten finns att man får med data man inte är intresserad av
2) Databasen måste slå upp vilka fält som finns med, görs inte automatiskt utan som en query innan den utför den man sjäv angett..