Вниз
Скачать: CL | DM;

Ув. мастера, как в IB создать кальк. поле с отсечением дроб. част   Найти похожие ветки 

← →
SM   (2004-02-24 16:43) [0]

Ув. мастера, как в InterBase создать калькуляционное поле с отсечением дробной части или с округлением. То есть что-то вроде:

Field1:=Trunc(Field2/100);
или
Field1:=Round(Field2/100);


← →
Johnmen ©   (2004-02-24 16:45) [1]

CAST(MyFloatField AS INTEGER) AS NewIntegerField


← →
SM   (2004-02-24 16:49) [2]


> Johnmen ©  


Спасибо, это может быть выходом. Но придется добавлять еще одно поле. А возможно ли использовать округление (отсечение) как выражение кальк. поля?


← →
SM   (2004-02-24 16:50) [3]

... Например так:

Field1:=Trunc(Field2/100)*100;


← →
Johnmen ©   (2004-02-24 16:51) [4]

>SM  

Что ты понимаешь под кальк. полем ? В таблице ? В наборе данных ?


← →
SM   (2004-02-24 17:03) [5]

Именно в таблице на сервере. Не хочу распылять кучу программной логики на клиентское приложение. То есть я создаю в таблице кальк. поле:

DOUBLE PRECISION
COMPUTED BY ((Field1/100)*100)

А нужно вроде такого:

DOUBLE PRECISION
COMPUTED BY (ROUND(Field1/100)*100)


← →
Johnmen ©   (2004-02-24 17:08) [6]

DOUBLE PRECISION
COMPUTED BY (CAST(Field1*100 AS INTEGER)/100)
Но думаю, что проблема надуманна...


← →
SM   (2004-02-24 17:16) [7]

Большое спасибо.


> Но думаю, что проблема надуманна...


Для кого как ... :)


← →
SM   (2004-02-25 13:48) [8]


> DOUBLE PRECISION
> COMPUTED BY (CAST(Field1*100 AS INTEGER)/100)


Проблемка возникла. Результат получается только целый.
Если Field1 = 5.268, то результат получается 5.000 вместо 5.260


← →
Zacho ©   (2004-02-25 13:54) [9]

Ну сделай так:
COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE PRECISION))


← →
Anatoly Podgoretsky ©   (2004-02-25 13:58) [10]

А в вопросе "поле с отсечением дробной части", но с учетом коррекции ответ выше. Ты поосторожнее с заданием вопросов, ставь их точно.


← →
SM   (2004-02-25 14:08) [11]


> DOUBLE PRECISION
> COMPUTED BY (CAST(Field1*100 AS INTEGER)/100)


Проблемка возникла. Например, если Field1=5.5747, то результат поля равен 5, а не 5.57, как ожидалось.
Пробовал явно указать тип поля:

ALTER TABLE SCH_ITEMS
   ADD "Res" DOUBLE PRECISION COMPUTED BY ((CAST(Field1*100 AS INTEGER)/100))


Тогда все равно результат равен 5.000

Что не так?


← →
Johnmen ©   (2004-02-25 14:13) [12]

1. Zacho ©   (25.02.04 13:54) [9]
2. Может быть подойти к этому по-другому ? Напр., не писать в поле неокругленные данные.


← →
SM   (2004-02-25 14:19) [13]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


← →
Johnmen ©   (2004-02-25 14:22) [14]

COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE PRECISION)/100))


← →
SM   (2004-02-25 14:23) [15]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


← →
SM   (2004-02-25 14:24) [16]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


← →
SM   (2004-02-25 14:26) [17]


> COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100 AS DOUBLE
> PRECISION))


Тоже самое 5.000


← →
Zacho ©   (2004-02-25 14:27) [18]

Тогда так:
COMPUTED BY (CAST(CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE PRECISION)/100) AS DOUBLE PRECISION))
Или так:
COMPUTED BY (CAST(Field1 AS NUMERIC (15,2)))


← →
SM   (2004-02-25 14:34) [19]


> COMPUTED BY (CAST(CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE
> PRECISION)/100) AS DOUBLE PRECISION))

Ругается на деление


> COMPUTED BY (CAST(Field1 AS NUMERIC (15,2)))

А вот это заработало! Спасибо большое.


← →
Johnmen ©   (2004-02-25 14:36) [20]

>Zacho ©   (25.02.04 14:27) [18]
>COMPUTED BY (CAST(Field1 AS NUMERIC (15,2)))

Всё равно в выч.поле будет Field1
:)


← →
Johnmen ©   (2004-02-25 14:36) [21]

>SM   (25.02.04 14:34) [19]

Самообман...


← →
stud ©   (2004-02-25 14:41) [22]

а что в результате-то должно получиться????


← →
Johnmen ©   (2004-02-25 14:42) [23]

>SM   (25.02.04 14:34) [19]
> COMPUTED BY (CAST(CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE
> PRECISION)/100) AS DOUBLE PRECISION))
>Ругается на деление

Повнимательней со скобками...


← →
SM   (2004-02-26 16:41) [24]

COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER)/100.000000001 AS DOUBLE PRECISION))

Вот так у меня все вышло


← →
Johnmen ©   (2004-02-26 16:46) [25]

А так нет ?
COMPUTED BY (CAST(Field1*100 AS INTEGER)/100.0))
или так
COMPUTED BY (CAST(CAST(Field1*100 AS INTEGER) AS DOUBLE PRECISION)/100)



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

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.022 c
1-1078395795
zac
2004-03-04 13:23
2004.03.28
Подскажите, как выгрузить изображение из image...


1-1078409816
t_vic
2004-03-04 17:16
2004.03.28
Ошибка при выполнении программы


9-1062027399
Dimon
2003-08-28 03:36
2004.03.28
Нужен компанент


6-1073914832
termos
2004-01-12 16:40
2004.03.28
Проверка соединения через сокеты


9-1062232999
IvoozZ
2003-08-30 12:43
2004.03.28
Сбор предметов и помещение их в инвентарь (2D квест)




   Наверх