ADO bağlantı SQL Express Numeric(18,6) alan kullanımında ondalık değer hatası

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

ADO bağlantı SQL Express Numeric(18,6) alan kullanımında ondalık değer hatası

Mesaj gönderen mmg »

Merhabalar,

Delphi 10.2 ADO bağlantı ve SQL Express VT kullanıyorum. Numeric(18,6) tipinde tanımlı bir alana 0.021788 değeri kaydediyorum. Table'a baktığımda alan değerinin ondalık kısmına sadece 4 basamak kayıt yaptığını görüyorum ve alan değeri 0.0218 oluyor. Ondalık kısmı 2 basamak kesiyor ve yuvarlıyor. Alanı tipini Decimal(18,6) kullansam da değişen bir şey olmuyor. Database'e girip ilgili alana elle 0.021788 yazabiliyorum. Bunu neden yaptığını bir türlü bulamadım. Daha öncede forumda bu konuyu gündeme getirmiştim fakat henüz bir çözüm bulunamadı. Konuyla ilgili acil yardımlarınızı rica ediyorum.

Problem için çözüm ararken aynı probleme yabancı bir forumda rastladım, ama bir çözüm sunulmamış orada da sanırım. Belki ustalarımıza bir yol gösterebilir diye paylaşıyorum.

http://www.delphigroups.info/2/3/186074.html

Kod: Tümünü seç

  DM1.STOKHAREKET.Close;
  DM1.STOKHAREKET.SQL.Clear;
  DM1.STOKHAREKET.SQL.Add('UPDATE STOKHAREKET SET GIREN_MIKTAR= :vGIREN_MIKTAR');
  DM1.STOKHAREKET.SQL.Add('WHERE STOK_NO=:vSTOK_NO AND DEPO=:vDEPO');
  DM1.STOKHAREKET.Parameters.ParamByName('vSTOK_NO').value:= '101143';
  DM1.STOKHAREKET.Parameters.ParamByName('vDEPO').value:= '03';
  DM1.STOKHAREKET.Parameters.ParamByName('vGIREN_MIKTAR').Value:= 0.021788;
  DM1.STOKHAREKET.ExecSQL;
Aşağıda görülen komutta belki ('vGIREN_MIKTAR').Value yerine ('vGIREN_MIKTAR').AsFloat kullanmamı tavsiye eden arkadaşlarım olabilir fakat [ .asfloat ] kullanamıyorum, derlerken hata veriyor. Bunu da forumda başlık olarak açtım. Bilgi olarak belirtmek istedim.

Kod: Tümünü seç

 
  DM1.STOKHAREKET.Parameters.ParamByName('vGIREN_MIKTAR').Value:= 0.021788;
ertank
Kıdemli Üye
Mesajlar: 1657
Kayıt: 12 Eyl 2015 12:45

Re: ADO bağlantı SQL Express Numeric(18,6) alan kullanımında ondalık değer hatası

Mesaj gönderen ertank »

Merhaba,

Öncelikle sorunu uygulamadan izole edip aşağıdaki gibi bir komutu SQL Server Management Studio içinde çalıştırdığınızda ardından tablo değerlerine baktığınızda sonuç kaç haneli olduğunu bildirebilir misiniz?

Kod: Tümünü seç

insert into stokhareket(vSTOK_NO, vDEPO, vGIREN_MIKTAR) VALUES('101143', '03', 0.021788);
Bu şekilde SQL Management Studio içinden girilen bilgiler 6 hane ondalık kabul ediyor ise bileşenlerinizi incelemeniz gerekir.

Eğer SQL Server tarafında sorun olmadığını teyid ediyor iseniz bir önceki sorunuza (viewtopic.php?f=2&t=38007) verilen cevaba istinaden parametrenin kayıt edilecek veri türünü belirtmeniz burada sorunu aşmanıza yardımcı olabilir.
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: ADO bağlantı SQL Express Numeric(18,6) alan kullanımında ondalık değer hatası

Mesaj gönderen mmg »

Merhaba,

SQL Server Management Studio içinde update sql çalıştırdım, 6 hane ondalık kabul etti, dediğiniz gibi sorun ADO bileşeninden kaynaklanıyor sanırım. ADO bileşenini değiştirmem gerekecek gerçekten zorlu bir süreç olacak bu çalışma sanırım. Bilgilendirmeniz için çok teşekkür ediyorum.
Cevapla