#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>