Текущий архив: 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