Asp Ve Veri Tipleri (?)

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EnableTurk
    EnableTurk's avatar
    Kayıt Tarihi: 29/Eylül/2007
    Erkek

    l1 = 39.84585
    l2 = 40.44019
    l3 = 40.6882
    l4 = 44.7497

    distance(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

     


    yolun açık ve aydınlık olsun ferdi baba.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    EnableTurk
    EnableTurk's avatar
    Kayıt Tarihi: 29/Eylül/2007
    Erkek

    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 ;)


    yolun açık ve aydınlık olsun ferdi baba.
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    buzukatak
    buzukatak's avatar
    Kayıt Tarihi: 27/Haziran/2010
    Erkek
    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.


    anlıyorum.
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Retro
    by_Tet
    by_Tet's avatar
    Kayıt Tarihi: 22/Mayıs/2012
    Erkek

    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

    iyibu! yeniden..
Toplam Hit: 725 Toplam Mesaj: 4