Delphi 10 ve sql express onalık hassasiyeti

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

Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

Merhaba,

Delphi 10.2 ve sql express database kullanıyorum. Database'de alan tipi numeric(28,10) olarak tanımlı. Problemim şöyle, database de tabloyu açarak doğrudan elle 0.0217885 gibi bir değer yazdığımda hiçbir sorun olmadan değeri yuvarlamadan olduğu gibi kaydediyor. Fakat uygulamadan aynı değeri "insert into" komutuyla kaydettiğim zaman ondalık basamağı 4 diğite yuvarlıyor. Kaydetmeden önce uygulamada mesaj ile yazılacak değeri görüyorum, ondada bir sorun gözükmüyor, değer doğru. Kaydederken değeri hiçbir şekilde round etmiyorum, Fakat değeri 0.0218000 olarak kaydediyor. Aşağıda gözüken kodu kullanarak kayıt ekliyorum, resimde görülen tabloda ki 1. kaydı elle girdim, bir sorun yok. 2. kaydı ise aşağıda görülen kod ile ekledim ve sonuç 2. satırda gözüktüğü gibi, yuvarlıyor. Yardımlarınızı rica ediyorum.

Kod: Tümünü seç

     
     ST_TEST.SQL.CLEAR;
     ST_TEST.SQL.Add('INSERT INTO TEST (STOK_NO,STOK_ADI,MIKTAR)');
     ST_TEST.SQL.Add('values (:vSTOK_NO,:vSTOK_ADI,:vMIKTAR)');
     ST_TEST.Parameters.ParamByName('vSTOK_NO').Value:= ExcelWorkSheet1.Cells.Item[ satir, 5 ].Value;
     ST_TEST.Parameters.ParamByName('vSTOK_ADI').Value:= STOKADI;
     ST_TEST.Parameters.ParamByName('vMIKTAR').Value:= 0.02127885;
     ST_TEST.ExecSQL;


STOK NO STOK ADI MİKTAR
-------------------------------------------------------------------------------------------------
101001 MİL 0.02127885 DATABASE ÜZERİNDEN ELLE GİRDİĞİM KAYIT
101002 PROFİL 0.0213 YUKARIDA Kİ KOD İLE EKLEDİĞİM KAYIT
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen yusuf simsek »

Merhaba

ST_TEST.Parameters.ParamByName('vMIKTAR').Value:= 0.02127885; satırında " VALUE " yerine " ASFLOAT " denermisiniz...
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

Delphi 10.2 de .AsFloat kabul etmiyor maalesef. İlk defa böyle bir şey ile karşılaşıyorum, çaresiz bıraktı beni.
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen yusuf simsek »

Ben 10.1 kullanıyırum, 10.1 de AsFloat kullanabiliyorum...

http://docwiki.embarcadero.com/RADStudi ... eld_Values

burada AsFloat kullanımı mevcut olduğunu belirtiyor...

ST_TEST query nesnesi ile ilgili farklı bir sorun olabilir!
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

Merhaba,

Ekte kodu gönderiyorum, verdiği hatada orada gözüküyor zaten. Bilemiyorum belki benim bir hatam veya bilmediğim bir parametresi olabilir.
Dosya ekleri
FloatHata.jpg
FloatHata.jpg (2.52 KiB) 1336 kere görüntülendi
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen yusuf simsek »

Resmi görüntüleyemiyorum... Farkı bir alana yükleyebilir misiniz... bir de ST_TEST hangi component acaba?
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

Merhaba,

ST_TEST "ADO" componenti. Resmi farklı nasıl yükleyebilirim, Dosya ekleri bölümünden seçerek jpg file yükleyebiliyorum. Bmp veya png çok büyük diyor kabul etmiyor.
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

Merhaba şöyle paylaştım,

Aşağıda ki kod ile AsFloat kullanımı yaptığımda aşağıda belirttiğim hatayı veriyor. ST_TEST yukarıda belirttiğim gibi TADOQuery componenti.

Kod: Tümünü seç

procedure TVERIALVER.SpeedButton5Click(Sender: TObject);
Var
STOKNO, STOKADI: String;
MIKTAR: Double;
begin

  ST_TEST.SQL.CLEAR;
  ST_TEST.SQL.Add('INSERT INTO TEST (STOK_NO,STOK_ADI,MIKTAR)');
  ST_TEST.SQL.Add('values (:vSTOK_NO,:vSTOK_ADI,:vMIKTAR)');
  ST_TEST.Parameters.ParamByName('vSTOK_NO').Value:= STOKNO;
  ST_TEST.Parameters.ParamByName('vSTOK_ADI').Value:= STOKADI;
  ST_TEST.Parameters.ParamByName('vMIKTAR').AsFloat:= 0.02127885;
  ST_TEST.ExecSQL;

end;
Verdiği hata mesajı böyle:

Kod: Tümünü seç

[dcc32 Error] U_VERIALVER.pas(2098): E2003 Undeclared identifier: 'AsFloat'
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

TEST Tablosu yapısı SQLEXPRESS'de aşağıda görüldüğü gibi tanımlı.

Kod: Tümünü seç

STOK_NO	nvarchar(50)		Null
STOK_ADI	nvarchar(100)		Null
MIKTAR	numeric(28, 10)		Null
yusuf simsek
Üye
Mesajlar: 330
Kayıt: 09 Mar 2004 11:18
Konum: Konya
İletişim:

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen yusuf simsek »

Hatayı derlerken aldığınızı düşünüyorum... Yani daha exe derlenemiyor?

Uses satırına [ Data.DB ] ekleyip tekrar derlemeyi dener misiniz
Bugün bir kez daha,
Hiç Birşey Bilmediğimi Öğrendim!!!

https://extrayazilim.com
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

Uses kısmı aşağıda görüldüğü gibi,

Kod: Tümünü seç

unit U_VERIALVER;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Buttons, ExtCtrls, OleServer, ExcelXP, StdCtrls, Data.DB,
  Data.Win.ADODB;
  
mmg
Üye
Mesajlar: 120
Kayıt: 20 Haz 2014 12:47

Re: Delphi 10 ve sql express onalık hassasiyeti

Mesaj gönderen mmg »

Merhaba,
Table'da numeric(28,10) veya decimal(28,10) kullanamadığım için bu alanları float olarak değiştirdim, bu şekilde devam ediyorum. Belki aynı sorunu yaşayan birileri olursa yardımcı olabilmek adına paylaşmak istedim.
Cevapla