Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Ошибка при вычислении поля во вьюшке
|
|||
|---|---|---|---|
|
#18+
MSSQL 7.0, SP2 Есть вьюшка, которая возвращается в том числе и поле следующей конструкции: ..., summa / qty as summa_r, ... где summa - money, qty - decimal(14,2). В MS Access версии 7.0 (в данном случае MSAccess - прокладка между сиквелом и интерфейсом) это поле линкуется как текстовое. В Query Analyser'е вижу это поле как поле с кучей нулей после запятой. Ставил round(summa / qty, 2) - то же самое. После того, как принудительно сделал convert(money, round(summa / qty, 2)) - всё честно увиделось как надо - в Access'е как money, в Query Analyser'е как число с четырьмя нулями после запятой. Просвятите, пожалуйста, что происходит с типом данных в этом выражении. Что получается? Не текст же? Искал в BOL что-нибудь по этому поводу - не нашел, может быть плохо искал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.12.2001, 11:54 |
|
||
|
Ошибка при вычислении поля во вьюшке
|
|||
|---|---|---|---|
|
#18+
DECLARE @A money, @B decimal(14,2) Set @a=10 Set @b=2 Select @a/@b As A into tmp execute sp_help tmp drop table tmp Получаем: Column_name Type ... Length Prec Scale Nullable ... ------------- ----------- ... ----------- ----- ----- -----------... A decimal ... 17 36 19 yes ... То есть decimal(36,19). В общем случае при таких операциях результат приводится к типу, который обеспечит отсутствие (или минимизацию) потери точности при округлении. Поскольку в Вашем View вы получаете цену (деля сумму на количество), то приведение результата к типу money IMHO правильное решение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2001, 08:22 |
|
||
|
Ошибка при вычислении поля во вьюшке
|
|||
|---|---|---|---|
|
#18+
Спасибо. Единственное в отношении этой проблемы не понятно, почему же данные не были поняты клиентом как плавающая точка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2001, 08:34 |
|
||
|
Ошибка при вычислении поля во вьюшке
|
|||
|---|---|---|---|
|
#18+
Потому что с одной стороны, Access-у не хватало precision у типа decimal, а, с другой стороны, засунув это поле в плавающую точку, он рисковал его исказить (потерять точность). Вот поэтому он его и мэпил как текст. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2001, 14:03 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32018867&tid=1824646]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
301ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 639ms |

| 0 / 0 |
