Ciao a tutti, ho una funzione che mi calcola la distanza fra 2 coordinate. Se le metto manualmente funziona alla grande (Latitud1, Longitud1, Latitud2, Longitud2), se invece le recupero da db mi sballa completamente i calcoli ... il problema sta nelvle variabili .... vuole le coordinate come decimale ... ma se le salvo sul db come numero mi passa la virgola (ho provato a fare un replace ma non lo riconosce + come numero), se la salvo come varchar mi passa il punto ma non come numero .... AIUUUUUUTO!!!!
Public Function CalculateDistanceASP(Latitud1, Longitud1, Latitud2, Longitud2, distType)
If IsNull(Latitud1) Then
Exit Function
End If
If Latitud1 = 0 Or Longitud1 = 0 Or Latitud2 = 0 Or Longitud2 = 0 Then
CalculateDistanceASP = Null
Exit Function
ElseIf Latitud1 = Latitud2 And Longitud1 = Longitud2 Then
CalculateDistanceASP = 0
Exit Function
End If
lat_radius1 = Latitud1 * 3.141592654 / 180
lon_radius1 = Longitud1 * 3.141592654 / 180
lat_radius2 = Latitud2 * 3.141592654 / 180
lon_radius2 = Longitud2 * 3.141592654 / 180
diff = Abs(lon_radius1 - lon_radius2)
X = Sin(lat_radius1) * Sin(lat_radius2) + Cos(lat_radius1) * Cos(lat_radius2) * Cos(diff)
dist = Atn(-X / Sqr(-X * X + 1)) + 2 * Atn(1)
miles = dist * 3958.754
If UCase("" & distType) = "K" Then
CalculateDistanceASP = formatnumber(miles * 1.609344,1)
Else
CalculateDistanceASP = formatnumber(miles,1)
End If
End Function

Rispondi quotando
