C# Float Sorunu

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

    Arkadaşlar, sorunu araştırdım fakat henüz çözemedim.

    Bir tane textbox var bundan gelen değeri request.form ile alıyorum

    float fltFiyati = 0;

    String strFiyati = Request.Form["fiyati"];

     

    if (String.IsNullOrEmpty(strFiyati) == true)

    {

     fltFiyati = float.Parse(strFiyati)

    }

    strFiyati = fltFiyati.ToString();

    ... Devam eden işlemler vs..

    Veritabanına eklerken

    SqlCommand cmdSQL = new SqlCommand("INSERT INTO tblDemirbaslar (urun_adi, cinsi, yeri, fiyati, aciklama) VALUES ('" + strUrun_Adi + "', '" + strCinsi + "', '" + strYeri + "', '" + strFiyati + "', '" + strAciklama + "')", bag);

     

    Fakat hata vermektedir.

    Error converting data type varchar to float.


    Yardımcı olabilir misiniz?

     

  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    insert kodundaki strFiyati nın önündeki ve arkasındaki tek tırnakları silip dener misin

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek

    Yok hocam, sql hatası verdi.

    Özetle, float türünde gelen bir değeri sql'de float alanına girmek istiyorum.

  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam teamviewer id pass yolla özelden bakayım

  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Gizem
    sLeymN
    sLeymN's avatar
    Kayıt Tarihi: 31/Mart/2008
    Erkek
    ontedi bunu yazdı

    Yok hocam, sql hatası verdi.

    Özetle, float türünde gelen bir değeri sql'de float alanına girmek istiyorum.

    abi sen böyle yapmamışsın ki ama, 

    float ı stringe çevirip db ye string olarak kaydetmişsin. 

  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    Underground
    Underground's avatar
    Kayıt Tarihi: 01/Ekim/2007
    Erkek

    edit

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    attackatak
    attackatak's avatar
    Kayıt Tarihi: 06/Mayıs/2007
    Erkek

    parameter kullan hocam. hatta bunu alışkanlık haline getir.

    ayrıca eğer yazı giriyorsan ' işaretini kullan, değilse kullanma.

    db de fiyati bölümünün değişkenini kontrol et.

    str fiyatında "." kullanıyorsa virgül yap, virgül kullanılıyorsa nokta yap.

    parameter kullanırsan da bu tür şeyleri kendi halleder ;)

  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    çevirmeyi şu şekilde yap muhtemelen nokta-virgülle ilgili bir hata var 

    fltFiyati = float.Parse(strFiyati CultureInfo.InvariantCulture);

    ve sql kodunda da strfiyati yerine fltFiyati  nı kullan (ama dediğim gibi tek tırnaklar olmayacak çünkü ifade metin türü değil)

    bir de bu işi parametrelerle yapman daha kolay ve sağlıklı olur

     

  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    furkan5816
    furkan5816's avatar
    Kayıt Tarihi: 25/Mayıs/2012
    Erkek

    fltFiyati = float.Parse(strFiyati) --> burada aldığın değeri float a çevirmişsin 

    strFiyati = fltFiyati.ToString();  --> burada tekrar float değerini stringe çevirip bu değeri veritabanına yollamışsın

    Eğer veritabanında float olarak belirtiysen 

    "INSERT INTO tblDemirbaslar (urun_adi, cinsi, yeri, fiyati, aciklama) VALUES ('" + strUrun_Adi + "', '" + strCinsi + "', '" + strYeri + "', '" + fltFiyati + "', '" + strAciklama + "')"

    olarak 

    varchar olarak belitrtiysen 

    "INSERT INTO tblDemirbaslar (urun_adi, cinsi, yeri, fiyati, aciklama) VALUES ('" + strUrun_Adi + "', '" + strCinsi + "', '" + strYeri + "', '" + strFiyati + "', '" + strAciklama + "')"

     

    olarak kullanmalısın.

    yani hatayı veritabanına değeri string olarak yolladığın için alıyorsun

  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ontedi
    ontedi's avatar
    Kayıt Tarihi: 04/Eylül/2005
    Erkek
            float fltFiyati = 0;
            if (String.IsNullOrEmpty(strFiyati) == false)
            {
                strFiyati = strFiyati.Replace(",", ".");
                fltFiyati = float.Parse(strFiyati, System.Globalization.CultureInfo.InvariantCulture);
            }
            Response.Write(fltFiyati);

    Şimdi arkadaşlar. Gelen değeri ekrana yazdırmak istediğimde Şöyle bir şey karşıma çıkıyor

    Mesela metin kutusuna 14.78 gibi bir şey yazıyorum sonuç olarak ekranda bana 14,78 olarak çıktı vermektedir.

    Oradaki replace işe yaramıyor galiba.

     

     

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    unbalanced
    unbalanced's avatar
    Kayıt Tarihi: 14/Haziran/2006
    Erkek

    hocam oradaki cultur olayı senin bilgisayarında yüklü olan dilin özelliğine göre şekil alır. biz tam olmayan sayılar için virgül kullandığımız için virgül görüyoruz. eğer bir amerkalı deneseydi nokta görürdü. kodda problem yok. illa ekrana virgül yazdıracaksan oradaki parse ı sil

Toplam Hit: 1403 Toplam Mesaj: 12