brorsanMedlem sedan nov. 2001402 inlägg En nybörjarfråga.
man kan ju skriva t.ex.
do until rs.eof
bla bla
loop
och ange hur många poster som ska hämtas i databasen för att reglera hur många som skrivs ut, men vad är den enklaste motsvarigheten om man vill hämta t.ex. 7 poster i databasen och bara skriva ut tre av dem (så man kan skriva ut återstående fyra poster längre ned på annat ställe).
Jag skulle kunna skippa loop såklart och skriva hela koden tre ggr i följd, men om jag vill göra det med loop, hur blir det då?
LedelMedlem sedan dec. 2004736 inlägg Dim i
For i = 0 To 3
Response.Write(rs("myField"))
rs.MoveNext
Next
EclipseMedlem sedan juli 20003 825 inlägg Alternativ lösning 1
Dim i
For i = [b]1[/b] To 3
Response.Write(rs("myField"))
rs.MoveNext
Next
Alternativ lösning 2
Dim i
For i = 0 To [b]2[/b]
Response.Write(rs("myField"))
rs.MoveNext
Next
Glöm inte även att se att det faktist finns x antal poster.
Jag kör på Eclipses alt.1:
Dim i, NumberOfLoops
NumberOfLoops = 3
If rs.RecordCount < NumberOfLoops Then NumberOfLoops = rs.RecordCount
If NumberOfLoops > 0 Then
For i = 1 To NumberOfLoops
Response.Write(rs("myField"))
rs.MoveNext()
Next
End If
EclipseMedlem sedan juli 20003 825 inlägg Själv skulle jag köra alternativ 2. Om NumberOfLoops = 3 betyder det för min hjärna att det finns FYRA poster, då första är på plats (0), eller möjligen (0,0).
Men det beror kanske lite på vad man har som referens...! :-)
Eller hur skadad man är på en skala.
TRE är alltid 3, det är ett faktum som är svårt att bortse från! Utom då möjligen i arrayer...
Eftersom ett Recordset inte kör som en Array så blir det lite "fel" med det tänket, men självklart om det är en array så är alt. 2 att rekommendera.
brorsanMedlem sedan nov. 2001402 inlägg Tack för svaren!
Jag förstod inte voigtann1s svar till 100% eller ens 90% men här är en följdfråga i alla fall. Kan man inte nollställa "i" och sen köra en till for next med i längre ned på sidan.
Vill göra så här på ett ungefär:
SQL = "SELECT blablabla ORDER BY RAND() limit 0,25"
Set rs7 = Server.CreateObject("ADODB.Recordset")
rs7.Open SQL, Connect, 1, 2
Dim i
For i = 1 To 11
Response.Write(rs7("myField"))
rs7.MoveNext
Next
i = ""
diverse annan kod här
Dim i
For i = 1 To 5
Response.Write(rs7("myField"))
rs7.MoveNext
Next
i = ""
diverse annan kod här
Dim i
For i = 1 To 4
Response.Write(rs7("myField"))
rs7.MoveNext
Next
i = ""
rs7.Close
set rs7 = nothing
Ska lägga till att på vissa sidor kommer de här tre olika for next vara med och på andra sidor kommer bara den översta vara med osv.
Du kan bara dimar i en gång
for i = 1 to 4 där sätter du ju om i till 1 så visst kan du ändra värdet på i efter loopar.
brorsanMedlem sedan nov. 2001402 inlägg ah, ok, tack, ja det fungerade ju fint när man tog ort de andra dim i.
sweet!