Hvordan stopper jeg en for next løkke og restarter den igen ?
fx for i = 0 to ubound(arrray,2) ...bla. bla. kode stop løkken hvis i = 67 og start forfra men fra i = 68(eller 67) stop løkken hvis i = 167 og start forfra men fra i = 167
#erikjacobsen jeg benytter et array der akkumulere dataafstande og tider fra en gps. i præsentationen af data benytter jeg rs.GetRows og gennemløber arrayet og opstiller heri at hvis der er mere end 60 sek mellem to dataLogs (datediff("s",varTid_1,varTid_2) > 60) SÅ er det så at jeg gerne vil ha at arrayet akkumulere på ny fra den 'række' som arrayet ellers er nået til...
koden ser således ud: <!--#include virtual="/autolog/functions.asp" --> <title>GPS Log</title> <% Dim arrMitArray, antal, e, i, a strSQL = "SELECT * FROM GPS_base" rs_custom strSQL,3,"" if rs.EOF or rs.BOF then response.Write("fejl i db-udtræk") else arrMitArray = rs.GetRows end if rs_end() %> <% for i = 0 to Ubound(arrMitArray,2)-1 for e = 0 to Ubound(arrMitArray,1) if e = 3 or e = 4 or e = 5 then ' 3.time 4.min 5.sek Dim varTime_1, varTime_2, varMin_1, varMin_2, varSek_1, varSek_2, varTid_1, varTid_2 varTime_1 = arrMitArray(3,i) varMin_1 = arrMitArray(4,i) varSek_1 = arrMitArray(5,i) varTid_1 = varTime_1&":"&varMin_1&":"&varSek_1 varTime_2 = arrMitArray(3,i+1) varMin_2 = arrMitArray(4,i+1) varSek_2 = arrMitArray(5,i+1) varTid_2 = varTime_2&":"&varMin_2&":"&varSek_2 end if next if datediff("s",varTid_1,varTid_2) > 60 then dim varTidsInt varTidsInt = varTidsInt & i &"." end if next ' response.Write(varTidsInt) Dim varNRi varNRi = split(varTidsInt,";") %> <br> <table border="1" cellspacing="2" cellpadding="2" style="font-weight:bold; text-align:right; vertical-align:text-top; font-family:Arial, Helvetica, sans-serif;"> <tr> <td>År</td> <td>Md</td> <td>Dag</td> <td>Time</td> <td>Min</td> <td>Sek</td> <td>N</td> <td>E</td> <td>Højde</td> <td>x</td> <td>y</td> <td>z</td> <td>GPS id</td> <td>afstand</td> <td>akkumuleret</td> <td>Tid</td> <td>Tidsforskel</td> </tr> <% for i = 0 to Ubound(arrMitArray,2)-1 %> <tr> <% for e = 0 to Ubound(arrMitArray,1) %> <td style="vertical-align:top;"> <% Dim Ngrad, Ngrad_1, Ngrad_2, Egrad, Egrad_1, Egrad_2, High, High_1, High_2 Ngrad_1 = replace(arrMitArray(6,i),".",",") Ngrad_2 = replace(arrMitArray(6,i+1),".",",") ' Ngrad = ((Ngrad_1)-(Ngrad_2)) Egrad_1 = replace(arrMitArray(7,i),".",",") Egrad_2 = replace(arrMitArray(7,i+1),".",",") ' Egrad = ((Egrad_1)-(Egrad_2)) High_1 = replace(arrMitArray(8,i),".",",") High_2 = replace(arrMitArray(8,i+1),".",",") ' High = ((High_1)-(High_2)) response.Write(replace(arrMitArray(e,i),".",",")) if e = 3 or e = 4 or e = 5 then ' 3.time 4.min 5.sek ' Dim varTime_1, varTime_2, varMin_1, varMin_2, varSek_1, varSek_2, varTid_1, varTid_2 varTime_1 = arrMitArray(3,i) varMin_1 = arrMitArray(4,i) varSek_1 = arrMitArray(5,i) varTid_1 = varTime_1&":"&varMin_1&":"&varSek_1 varTime_2 = arrMitArray(3,i+1) varMin_2 = arrMitArray(4,i+1) varSek_2 = arrMitArray(5,i+1) varTid_2 = varTime_2&":"&varMin_2&":"&varSek_2 end if %> </td> <% next %> <td> <% Dim varTalToARCSIN, PI, varARCSIN, Z PI = 3.14159265358979 varTalToARCSIN = (SQR((SIN((((PI/180)*Ngrad_1)-((PI/180)*Ngrad_2))/2)^2)+COS(((PI/180)*Ngrad_1))*COS(((PI/180)*Ngrad_2))*(SIN((((PI/180)*Egrad_1)-((PI/180)*Egrad_2))/2)^2))) Z = Sqr(-varTalToARCSIN * varTalToARCSIN + 1) If Abs(Z) <> 0 Then varARCSIN = Atn(varTalToARCSIN / Z) Else varARCSIN = (PI/2) End If Dim varAfstand, varAfs_1, varAfs_2 varAfstand = (6371.1*(2*varARCSIN)) response.Write(varAfstand & "<br>") varAfs_1 = varAfs_1 + varAfstand varAfs_2 = varAfs_2 + varAfstand %> </td> <td> <%=(varAfs_2)%> </td> <td> <%=FormatDateTime(varTid_1,vbLongTime)%> </td> <td> <%=datediff("s",varTid_1,varTid_2)%> </td> </tr> <% next %> </table> <font style="position:absolute; top:8px; left:10px;"><%=varAfs_1&" KM"%></font>
Og det er vel ca. hvad du skal have. Koden, hvor vi ikke genstarter for-løkken, er så ca.:
<%
dim a(15)
a(0)=1 a(1)=30 a(2)=60 a(3)=90
a(4)=1000 a(5)=1030 a(6)=1060 a(7)=1090
a(8)=2000 a(9)=2030 a(10)=2060 a(11)=2090
a(12)=3000 a(13)=3030 a(14)=3060 a(15)=3090
dim seqno seqno = 0
dim oldval oldval = -1000000
for i=0 to ubound(a) if a(i)-oldval > 60 then seqno=seqno+1 response.write("<br>Starting sequence " & seqno) end if response.write(" " & a(i)) oldval = a(i) next
tjaaa.... jeg er ikke helt sikker på at jeg kan gennemskue og tilpasse det til min kode.... som jeg har tiltænkt koden, så er det i selve dataarrayet at jeg finder ud af ved hvilket i (fx 67, 255, 677) at der er mere end 60 mellem data-'rækkerne' dertil er de 60 sek en variable jeg senere opstiller at brugeren skal kunne tilpasse...
Som jeg læser dit indlæg, så definere du a til 15, betyder det at jeg skal definere mit array-antal? dit array skal vel også omkranse min tidligere kode.... ?
jeg prøver at tilpasse koden og ideen... jeg vender tilbage med info om det lykkedes....
Synes godt om
Ny brugerNybegynder
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.