Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.09.10;
Скачать: CL | DM;

Вниз

Десятичные поля запроса.   Найти похожие ветки 

 
patrick1968 ©   (2011-05-11 14:17) [0]

Подскажите, плз, по такой теме есть запрос выдающий десятичные значения с точностью более 4 знаков после запятой, а компонент ADOQuery эти значения округляет до 4 знаков, где можно настроить точность получаемых данных, пробовал свойство EnableBCD устанавливать в false и Precision увеличивал - результата нет.


 
clickmaker ©   (2011-05-11 14:20) [1]

> а компонент ADOQuery эти значения округляет до 4 знаков

где это видно?


 
Ega23 ©   (2011-05-11 14:23) [2]


> а компонент ADOQuery эти значения округляет до 4 знаков

Не должен.

А в целом - грамотно оформляй вопрос:
1. Тип СУБД
2. Скрипт на создание поля
3. Скрипт на выборку поля
4. Код получения значения в Delphi.


 
Patrick1968 ©   (2011-05-11 14:35) [3]

Вот такой запрос помещаю в SQL

SELECT q.CODEAP,
      SUM(ROUND(q.Prixod*q.Rate/10000, 5)) Rasxod
FROM(
   SELECT /*+ INDEX(smdocuments smdocuments_createdat) INDEX(smsspec smcspec_displaypos) INDEX(smaltunits smcaltunits_pk)*/
   (select scp.propval from smcardproperties scp where scp.article = s.article and scp.propid="40") CodeAP,
   s.article,
   s.Quantity as Prixod,
   sma.Rate,
   case
       when d.ClientIndex is null then
            375
       else
           d.ClientIndex
   end ClientIndex,
   d.opcode,
   decode((select sm1.Article from smcard sm1 where sm1.article=s.Article and bitand(sm1.flags, 128)=128), "", 0, 1) Alco
   FROM smdocuments d, smspec s, SMAltUnits sma
   WHERE d.DocType in ("IW","WO")
       and d.DocState in (2, 3)
       and decode((select sm1.Article from smcard sm1 where sm1.article=s.Article and bitand(sm1.flags, 128)=128), "", 0, 1) = 1
       and d.createdat between to_date ( "01.01.2011", "DD.MM.YYYY" ) and to_date ( "31.03.2011", "DD.MM.YYYY" )
       and s.DOCID=d.ID
       and d.LocationFrom = 1
       and sma.article=s.article
       and not (d.ID Like "СВ%")
       and d.opcode = 1
   )q
GROUP BY q.CodeAP
ORDER BY q.CodeAP

Если затем результат обрабатывать то в отладчике видно, что поле RACXOD округлено


 
Ega23 ©   (2011-05-11 14:48) [4]

SUM(ROUND(q.Prixod*q.Rate/10000, 5)) Rasxod

1. Какой тип полей q.Prixod и q.Rate ?
2. Какая СУБД и что говорит хелп по ROUND?
3. Сколько будет 0.00001 + 0.00002 + 0.00003 + 0.00004  ?  :)


 
Patrick1968 ©   (2011-05-11 15:04) [5]

1. q.Prixod number(14,3) q.Rate number
2. Oracle
3. соответственно 0.0001, так я запрос в sqlplus"e выполняю, там в одной строке вижу 0.01215 и туже строку в ADOQuery 0.0122


 
Ega23 ©   (2011-05-11 15:09) [6]


> 1. q.Prixod number(14,3) q.Rate number

Скорее всего ответ - в этом.
Первое поле - 14.3, второе - по-умолчанию (надо смотреть, что там по-умолчанию). Приведи к одинаковому типу.


 
Anatoly Podgoretsky ©   (2011-05-11 15:34) [7]

> Patrick1968  (11.05.2011 15:04:05)  [5]

Какой тип поля в ADOQuery


 
stas ©   (2011-05-11 17:38) [8]

patrick1968 ©   (11.05.11 14:17)
глюк такой есть в ADOQuery, нужно либо в запросе поле конвертировать во float, либо удалить автоматически созданное BCD поле в AdoQuery и создать с таким же именем указав тип float.


 
stas ©   (2011-05-11 17:39) [9]

stas ©   (11.05.11 17:38) [8]
Это даже не в ADOQuery а в принципе в ADO


 
Patrick1968 ©   (2011-05-11 17:57) [10]

В продолжении темы, предыдущее разрешил, через EnableBCD = false теперь другой затык, для отображения dbf таблицы использую известный компонент DBGridEh и там есть возможность подбивать итоги, и хотя моё поле имеет тип Float его сумма все равно округляется до 4, видимо причина кроется где-то здесь. Может кто сталкивался?


 
sniknik ©   (2011-05-11 17:57) [11]

> а в принципе в ADO
это дельфи... у него нет полноценной поддержки BCD, конвертация идет через каренси.


 
Ega23 ©   (2011-05-11 18:00) [12]


> и хотя моё поле имеет тип Float


Ты уверен, что оно именно float?


 
Patrick1968 ©   (2011-05-11 18:21) [13]

если верить своим глазам точно TFloatField


 
Patrick1968 ©   (2011-05-11 18:24) [14]

причем ставлю у поля грида ValueType в fvtSum округляет, а если fvtFieldValue ,то всё в норме


 
OW ©   (2011-05-12 09:07) [15]

в генофонд лезть надо, смотреть
с procedure TColumnFooterEh.EnsureSumValue; начать

а так и в демке у них сумма до 4х знаков.

> это дельфи... у него нет полноценной поддержки BCD, конвертация
> идет через каренси.

имхо отсюда ноги растут


 
Patrick1968 ©   (2011-05-12 09:24) [16]

А можно немножко поподробней, а то что-то такой процедуры найти не могу нигде


 
OW ©   (2011-05-12 09:26) [17]

unit DBGridEh
ctrl + F


 
OW ©   (2011-05-12 09:27) [18]

да, EhLib v3.6c


 
Anatoly Podgoretsky ©   (2011-05-12 09:32) [19]

> OW  (12.05.2011 09:07:15)  [15]

Ну еще и FMTBCD, но только на словах как правило.


 
Patrick1968 ©   (2011-05-12 09:34) [20]

ehlib 2.5 поэтому видимо и нет



Страницы: 1 вся ветка

Текущий архив: 2015.09.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
15-1415050205
Юрий
2014-11-04 00:30
2015.09.10
С днем рождения ! 4 ноября 2014 вторник


2-1396356964
Дмитрий
2014-04-01 16:56
2015.09.10
0,1 is not a valid BCD value


15-1418592602
Юрий
2014-12-15 00:30
2015.09.10
С днем рождения ! 15 декабря 2014 понедельник


2-1396169201
Antonenko Aleks
2014-03-30 12:46
2015.09.10
Delphi XE5, как использовать буфер обмена на Андроид?


2-1396381520
Signal
2014-04-01 23:45
2015.09.10
Подскажите функцию для перекодировки доменных имен по русски





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский