Uluç Karadeniz

LOD SQL ile çekilen veri formatı

  Tiger/Logo Object Designer (LOD)

Merhaba,

LOD ile geliştirdiğimiz bir projede SQL üzerinden aşağıdaki şekilde veri çekmekteyiz.

 CreateQuery(MyQry1)
 MyQryTable1 = Application.GetTableName(38, Application.CompanyId, Application.FiscPerdId)
 MySqlTxt1 = "SELECT MIN(PRICE) FROM " + MyQryTable1 + " WHERE CARDREF = 2 "
 MyQry1.SetSQLText(MySqlTxt1)
 
 If MyQry1.ExecuteDirect() Then
 Res = MyQry1.First()
 if res = 0 then
 minPrc = 0
 end if
 Do While Res=1

 MyQry1.GetFieldValue(1, 3, minPrc)
 
 
 Res=MyQry1.Next()
 Loop
 End if
 MyQry1.Clear()

Buradan gelen minPRC değişkeni 2,2 gibi bir değer ile dolmakta. Ardından bu değeri kullanarak bazı işlemler yapmaktayız. 


dvzMinPrc = minPrc * 3,5405

 if LINENET = dvzMinPrc then
.
else
.
end if

Bu şekilde yazdığımız zaman dvzMinPrc değeri 7,7891 şeklinde ekrana warn olarak çıkmakta. LINENET değeri de aynı şekilde ekrana warn olarak çıkartıyorum. Ancak if koşulundaki eşitlik çalışmıyor , else ye giriyor. Her iki değeri ekranda 7,7891 görmeme rağmen. 

minPrc değerini SQL üzerinden çekmeyip kendim minPrc = 2.2 dediğim zaman değerler yine 7,7891 oluyor ve if koşulu eşitmiş gibi davranıyor. Sorunun "." ve "," den kaynaklandığını düşündüm. SQL'e gönderdiğim sorguyu REPLACE(MIN(PRICE),",",".") şeklinde gönderiyorum. Geriye 2.2 dönüyor ancak yine eşit değilmiş gibi davranıyor. 

Özetlemek gerekirse SQL üzerinden çekersem hesaplamaları doğru yapsa da çıkan sonuç LINENET'e eşit olsa da eşit değilmiş gibi davranıyor , SQL'den çekmeyip kendim bir değer atarsam yine hesaplamalar doğru oluyor ve LINENET'e eşit gibi davranıyor.




lod


Uluç Karadeniz

Garip bir şekilde dvzMinPrc = minPrc * 3,5405 kısmından sonra warn(dvzMinPrc) kodunu ekleyince eşitmiş gibi davrandı. Silince tekrar eşit değilmiş gibi davranıyor...


18/08/17 00:45


Uluç Karadeniz

Çözümü LINENET ve dvzMinPrc değişkenlerini STR() olarak stringe çevirip eşit mi değil mi diye kontrol ederek buldum. Yinede neden float iken eşit olmadığını merak ediyorum.


20/08/17 14:40

Cevap vermek için giriş yapmanız gerekmektedir.