Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

dbf и sql [D7, dBase, FoxPro]


Дем ©   (2004-07-01 17:14:00) 

Помогите решить такую проблему:
Необходимо брать из dbf базы значения и округлять их.
Пишу запрос
select round(sum) from table
но такой запрос вызывает ошибку.


bushmen   (2004-07-01 17:47:00) [1]

>с какой стати?

Со школьной скамьи


Соловьев   (2004-07-01 17:34:00) [2]


> 0,50 должно округляться до 0

с какой стати?


Sandman25   (2004-07-01 17:34:00) [3]

[13] bushmen ©   (01.07.04 17:33)

+ 0.4999999 :)


bushmen   (2004-07-01 17:33:00) [4]

>select cast("sum" + 0.5 as int) from table :)

Не получится. 0,50 должно округляться до 0, а если добавить 0,5, то результат будет 1 :))


Sandman25   (2004-07-01 17:28:00) [5]

Если decimal(10,1), то capability not supported
Если numeric(10,1), то возвращает аргумент, то есть без округлений. Например, 0.123 :(


Sandman25   (2004-07-01 17:28:00) [6]

[8] bushmen ©   (01.07.04 17:24)

select cast("sum" + 0.5 as int) from table :)


bushmen   (2004-07-01 17:26:00) [7]

>о, а если
>select cast("sum" as numeric(10,1)) from table

А вот так попробуйте :))) У меня округляет :)


Sandman25   (2004-07-01 17:25:00) [8]

[7] Соловьев ©   (01.07.04 17:23)

Интересная мысль, надо попробовать.


bushmen   (2004-07-01 17:24:00) [9]

>select cast("sum" as integer) from table

У меня он отбрасывает дробную часть, а не округляет.


Соловьев   (2004-07-01 17:23:00) [10]

о, а если
select cast("sum" as numeric(10,1)) from table


Sandman25   (2004-07-01 17:22:00) [11]

На dBase/foxPro - только на клиенте, то есть средствами Delphi, а не SQL.
См. LocalSQL.hlp - functions. Но round там нет.


Соловьев   (2004-07-01 17:22:00) [12]


> Спасибо!, а как сделать округление до десятых?

используй АДО, или делай на клиенте


Соловьев   (2004-07-01 17:21:00) [13]

если АДО
select Round([sum];0) from table


Дем   (2004-07-01 17:20:00) [14]

При попытке Query выставить в Active, выходит сообщение об ошибке, что что-то не поддерживается.

to Sandman25:
Спасибо!, а как сделать округление до десятых?
я знаю можно так: select round(sum,1) from table
Но как я уже говорил, round почему-то не хочет работать :(


Sandman25   (2004-07-01 17:17:00) [15]

select cast("sum" as integer) from table


Iconka   (2004-07-01 17:16:00) [16]

Ошибка приходит по вызову? Какая?


Наверх

Титульная страница Поиск, карта сайта Написать письмо