Форум: "Базы";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
ВнизПроблема с вычисляемыми полями в SQL запросе Найти похожие ветки
← →
SergP (2003-12-17 12:53) [0]ADO, Provider=VFPOLEDB.1
Делаю такой запрос:
select r,region,vb,plm,mon,mon/plm as procent ....
так mon/plm as procent работает нормально в designtime,
но в runtime вылезает ошибка (что-то типа "Invalid floating point operation")
Как сделать чтобы оно нормально работало в runtime? И почему в designtime оно нормально работает?
← →
JibSkeart (2003-12-17 13:01) [1]А дальше с ними ничего не делаешь ?
← →
SergP (2003-12-17 13:04) [2]
> JibSkeart © (17.12.03 13:01) [1]
> А дальше с ними ничего не делаешь ?
Дальше TADOQuery --> TDataSource --> TDBGrid
и пока больше ничего....
← →
JibSkeart (2003-12-17 13:07) [3]попробуй заверни в хп ...
← →
Sandman25 (2003-12-17 13:08) [4]А select r,region,vb,plm,mon,mon/(plm+1) as procent ....
работает?
← →
JibSkeart (2003-12-17 13:12) [5]дейсвительно проверяй если plm <>0 то выводи :)
а дальше join или union
для 0 :)
← →
SergP (2003-12-17 13:24) [6]
> JibSkeart © (17.12.03 13:12) [5]
> дейсвительно проверяй если plm <>0 то выводи :)
> а дальше join или union
> для 0 :)
В таблице действительно есть записи где plm=0, но в where у меня отбираются такие записи:
select r,region,vb,plm,mon,mon/plm as procent, mon-plm as razn from region,z3121603 where (p=999999 or p=900999) and c_sti=r
для которых plm не может быть равен 0.
т.е. в моей таблице у записей для которых p=999999 or p=900999 , plm не равен 0
← →
SergP (2003-12-17 13:28) [7]
> Sandman25 © (17.12.03 13:08) [4]
> А select r,region,vb,plm,mon,mon/(plm+1) as procent ....
> работает?
Вот блин. Это работает. В натуре связано с делением на 0. Получается что эта вся фигня вычисляется для всех записей.
Странно: нафига тогда производить вычисления для записей которые не попадают под условия where?
← →
Sandman25 (2003-12-17 13:28) [8][4] Sandman25 © (17.12.03 13:08)
← →
Sandman25 (2003-12-17 13:30) [9][7] SergP © (17.12.03 13:28)
Наверное, все-таки в моей таблице у записей для которых p=999999 or p=900999 , plm не равен 0 неверно.
← →
SergP (2003-12-17 13:36) [10]
> Sandman25 © (17.12.03 13:30) [9]
> [7] SergP © (17.12.03 13:28)
>
> Наверное, все-таки в моей таблице у записей для которых
> p=999999 or p=900999 , plm не равен 0 неверно.
Таблица небольшая, так что я проверил все вручную. Там все действительно так как я сказал. Кроме того запрос работает если TADOQuery активировать в designTime.
Вобщем если не получится сделать нормально, то уберу это поле и буду вычислять уже в самой проге это значение....
← →
Sandman25 (2003-12-17 13:38) [11][10] SergP © (17.12.03 13:36)
Понятно. Может, так данная СУБД (FoxPro?) работает с запросами.
← →
SergP (2003-12-17 14:02) [12]
> Понятно. Может, так данная СУБД (FoxPro?) работает с запросами.
А черт их разберет эти СУБД, у всех синтаксис запросов разный, постоянно путаешься... А теперь еще и такие глюки (вернее особенности...)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.13;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c