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

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

Проблема с вычисляемыми полями в SQL запросе [D6, dBase, FoxPro]


SergP ©   (2003-12-17 12:53:00) 

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 оно нормально работает?


SergP   (2003-12-17 14:02:00) [1]


> Понятно. Может, так данная СУБД (FoxPro?) работает с запросами.


А черт их разберет эти СУБД, у всех синтаксис запросов разный, постоянно путаешься... А теперь еще и такие глюки (вернее особенности...)


Sandman25   (2003-12-17 13:38:00) [2]

[10] SergP © (17.12.03 13:36)

Понятно. Может, так данная СУБД (FoxPro?) работает с запросами.


SergP   (2003-12-17 13:36:00) [3]


> 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:30:00) [4]

[7] SergP © (17.12.03 13:28)

Наверное, все-таки в моей таблице у записей для которых p=999999 or p=900999 , plm не равен 0неверно.


SergP   (2003-12-17 13:28:00) [5]


> 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:00) [6]

[4] Sandman25 © (17.12.03 13:08)


SergP   (2003-12-17 13:24:00) [7]


> 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


JibSkeart   (2003-12-17 13:12:00) [8]

дейсвительно проверяй если plm <>0 то выводи :)
а дальше join или union
для 0 :)


Sandman25   (2003-12-17 13:08:00) [9]

А select r,region,vb,plm,mon,mon/(plm+1) as procent ....
работает?


JibSkeart   (2003-12-17 13:07:00) [10]

попробуй заверни в хп ...


SergP   (2003-12-17 13:04:00) [11]


> JibSkeart © (17.12.03 13:01) [1]
> А дальше с ними ничего не делаешь ?


Дальше TADOQuery --> TDataSource --> TDBGrid
и пока больше ничего....


JibSkeart   (2003-12-17 13:01:00) [12]

А дальше с ними ничего не делаешь ?


Наверх

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