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

Вниз

Беда с двойной точностью   Найти похожие ветки 

 
Mike Kouzmine   (2010-02-16 15:28) [0]

Суть:
Имеется процедура
CREATE PROCEDURE SPISAN (
   HEADER_ID INTEGER)
AS
DECLARE VARIABLE N VARCHAR(100) CHARACTER SET WIN1251;
DECLARE VARIABLE N_ID INTEGER;
DECLARE VARIABLE KOL DOUBLE PRECISION;
DECLARE VARIABLE CEN_SPIS DOUBLE PRECISION;
DECLARE VARIABLE O INTEGER;
DECLARE VARIABLE ID INTEGER;
DECLARE VARIABLE S INTEGER;
DECLARE VARIABLE P_ID INTEGER;
DECLARE VARIABLE KOL_TEK1 DOUBLE PRECISION;
DECLARE VARIABLE TEMP DOUBLE PRECISION;
BEGIN
 SELECT OPER, SOST_ID FROM HEADER
 WHERE HEADER_ID = :HEADER_ID INTO :O, :S;
 IF ((O = 2) AND (S = 1)) THEN
   BEGIN
     FOR SELECT SALES_ID, NOM_ID,
     CAST(CAST( (KOLOUT * 1000) AS INTEGER) AS FLOAT) / 1000 FROM SALES
     WHERE HEADER_ID = :HEADER_ID
     INTO :ID, :N_ID, :KOL DO
       BEGIN
         FOR SELECT PARTS_ID,
            CAST( CAST( (KOL_TEK * 1000) AS INTEGER) AS FLOAT) / 1000,
            CENA_RUB FROM PARTS
         WHERE ((NOM_ID = :N_ID) AND
         ((CAST( CAST( (KOL_TEK * 1000) AS INTEGER) AS FLOAT) / 1000) > 0))
         ORDER BY DATE_OPER, PARTS_ID INTO :P_ID, :KOL_TEK1, :CEN_SPIS DO
           BEGIN
             IF ((KOL_TEK1) >= KOL) THEN
               BEGIN

                 TEMP = :KOL_TEK1 - :KOL;

                 UPDATE PARTS
                 SET KOL_TEK = IIF(:TEMP < 0,0,:TEMP)
                 WHERE PARTS_ID = :P_ID;

                 INSERT INTO SPISANIE
                 (SALES_ID,PARTS_ID,KOL_OUT,CENA_SPIS)
                 VALUES
                 (:ID, :P_ID, :KOL, :CEN_SPIS);

                 KOL = 0;
                 KOL_TEK1 = 0;

                 BREAK;

               END
             ELSE
               BEGIN

                 UPDATE PARTS
                 SET KOL_TEK = 0
                 WHERE PARTS_ID = :P_ID;

                 INSERT INTO SPISANIE
                 (SALES_ID,PARTS_ID,KOL_OUT,CENA_SPIS)
                 VALUES
                 (:ID, :P_ID, :KOL_TEK1, :CEN_SPIS);

                 KOL = KOL - KOL_TEK1;

               END
           END
         IF (KOL > 0) THEN
           BEGIN
             EXCEPTION NOT_SATIS;
           END
       END
     UPDATE HEADER
     SET SOST_ID = 2
     WHERE HEADER_ID = :HEADER_ID;
     UPDATE SALES
     SET SOST_ID = 2
     WHERE HEADER_ID = :HEADER_ID;
   END
 WHEN EXCEPTION NOT_SATIS DO
  BEGIN
    SELECT TRIM(NAME) FROM NOMETKLATURA
    WHERE NOM_ID = :N_ID INTO :N;
    EXCEPTION NOT_SATIS "НЕ ХВАТАЕТ " || :KOL || " " || :N || " (" || :N_ID || ")";
  END
 WHEN ANY DO
   BEGIN
     SELECT TRIM(NAME) FROM NOMETKLATURA
     WHERE NOM_ID = :N_ID INTO :N;
     EXCEPTION NOT_SATIS "ОШИБКА СПИСАНИЯ " || :KOL  || :KOL_TEK1 || :N
      || " (" || :N_ID || ")";
   END
END

При отрабатывании возбуждается исключение

NOT_SATIS.
НЕ ХВАТАЕТ 3.552713678800501e-015 ТИК MICRO ТВИЛЛ C 4040/6044 ЦВЕТ:5522 (750).
At procedure "SPISAN".

прохожу отладчиком - все нормально.

К какому типу лучше привести для рассчетов или, возможно, есть другой вариант?


 
Mike Kouzmine   (2010-02-16 15:37) [1]

Проблему решил.
Остался один вопрос - почему при вызове возбуждается исключение, а при отладке нет. Работаю в Эксперте.


 
turbouser ©   (2010-02-16 16:55) [2]


> Mike Kouzmine   (16.02.10 15:37) [1]

В отладчике отображаются значения переменных - можно посмотреть.
А вообще, отладчик в ibe не совсем "отладчик" :)


 
Mike Kouzmine   (2010-02-17 09:12) [3]

turbouser ©   (16.02.10 16:55) [2] Я уже понял. Жаль.



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

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

Наверх




Память: 0.48 MB
Время: 0.009 c
9-1189869399
ElectriC
2007-09-15 19:16
2011.11.20
Collusion Detection на ID3DXSprite


15-1311097465
картман
2011-07-19 21:44
2011.11.20
Взаимодействие объектов


2-1312259634
Grimm
2011-08-02 08:33
2011.11.20
Как правильно написать условие if для StringList.IndexOf ?


2-1311848966
ixen
2011-07-28 14:29
2011.11.20
Помогите написать SQL запрос...


2-1311843120
Александр160591
2011-07-28 12:52
2011.11.20
запарка с компонентами и их свойствами