Asp Ve Veri Tipleri (?)
-
l1 = 39.84585
l2 = 40.44019
l3 = 40.6882
l4 = 44.7497distance(l1,l2,l3,l4, "K")
Şeklinde kullandığımda,mesafe hesaplama fonksiyonu doğru sonuç gönderiyor.
Fakat dbden çektiğim aynı verileri gönderdiğimde saçma sapan işlem sonuçları geliyor. Nedeni nedir acaba bir türlü çözemedim, double, single veri tiplerini denedim ama bir türlü sonuca ulaşamadım.
Yani fonksiyondan değilde, veri tipinden kaynaklandığını düşünüyorum. Çünkü db den çekmediğim sürece bir problem yok. DB'den çektiğimi yukarıdaki tipte değişkene nasıl gönderebilirim ? Yada gelen veriyi değişkene atadıktan sonra, veri tipini yok etmem lazım. Tırnak koyunca bile string olarak gidiyor fonksiyona saçmalıyor.
Benim beyin iptal.
Fonksiyon da şöyle,
const pi = 3.14159265358979323846
Function distance(lat1, lon1, lat2, lon2, unit)
Dim theta, dist
theta = lon1 - lon2
dist = sin(deg2rad(lat1)) * sin(deg2rad(lat2)) + cos(deg2rad(lat1)) * cos(deg2rad(lat2)) * cos(deg2rad(theta))
dist = acos(dist)
dist = rad2deg(dist)
distance = dist * 60 * 1.1515
Select Case ucase(unit)
Case "K"
distance = distance * 1.609344
Case "N"
distance = distance * 0.8684
End Select
End Function
Function acos(rad)
If Abs(rad) <> 1 Then
acos = pi/2 - Atn(rad / Sqr(1 - rad * rad))
ElseIf rad = -1 Then
acos = pi
End If
End function -
Mssql de veri tipini float yaparak kurtuldum bu lanet hatadan.
Enlem boylam bilgileri ile işlem yapacaksanız, geometry veya geography veri tipi ile uğraşmayın derim. Float ;)
-
EnableTurk bunu yazdı
Mssql de veri tipini float yaparak kurtuldum bu lanet hatadan.
Enlem boylam bilgileri ile işlem yapacaksanız, geometry veya geography veri tipi ile uğraşmayın derim. Float ;)
Şimdi ama o veri tipleri ile uğraşmayın deme :) O tipler desteklenen sağlayıcılarla (ör: .net) veya doğrudan t-sql içinde elzem olabiliyor.
Tabi sen ASP için doğru olanı yapmışsın. Hem ASP, hem de doğal olarak uyumlu olduğu veri sağlayıcılar / sürücüler eski olduklarından ileriye dönük uyumlulukları olmayabiliyor. Aslında bu sağlayıcıların hala yeni sürümleri de çıkıyor çıkmasına ama yerelde çalıştırmak da marifet değil.
Ürün ortamında (paylaşımlı bir hosting olması kuvvetle muhtemel) sağlayıcının yeni sürümü yoksa yine oturup kalıyoruz.
ASP ile Windows 2003 sonrası her IIS üzerinde adam gibi çalışacak bir uygulama geliştirmek için SQL Server 2005'den sonra icat olunan veri tiplerini kullanmamakta fayda var. -
Aldığın değeri cint() fonksiyonundan geçir sorunun kalmıcak.
edit/// cint olmaz virgülle işlem yapıyosun :D yazarım buraya
by_Tet tarafından 24/Nis/14 08:29 tarihinde düzenlenmiştir
