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

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

Как обойти дел. на ноль в JetSQL [D6, Paradox]


Victor! ©   (2004-11-04 10:58:00) 

Использую ADOQuery и JetSQL (таблицы в Paradox). Такая проблема: в SQL используются расчеты, т.е. в полях запроса должны вычисляться формулы. В некоторых случаях происходит деление на ноль, и DBGrid ничем не заполняется, выдается сообщение "... E_FAIL". Можно ли сделать так, чтобы DBGrid все-таки заполнялся, но в тех местах, где происходит дел. на ноль просто выводилось "дел. на ноль", т.е. как заставить JetSQL продолжать выполнять запрос, даже если возникает дел. на ноль, и подставлять в этом случае "NULL"


sniknik   (2004-11-10 12:57:00) [1]

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


Victor!   (2004-11-10 12:46:00) [2]

Да, видно не судьба


Victor!   (2004-11-08 17:52:00) [3]

Я повторюсь: " Если и использовать агрегативные функции (типа Avg(1/F1), где F1 иногда м/б 0)  то возникает ошибка, сообщение "Деление на ноль" " - т.е. в случае, когда формула обрабатывает просто данные таблицы, то возвращается NULL, а только когда пытаешся их просуммировать или усреднить (Sum, Avg) возникает ошибка.


sniknik   (2004-11-08 11:15:00) [4]

> Че? Никто не знает?
в смысле?
оно всетаки помогло или нет? по описанию "другая беда" то же самое что и было до этого (для которого уже "Перенос курсора на сервер очень помог..." есть решение)


Victor!   (2004-11-08 11:10:00) [5]

Че? Никто не знает?


Victor!   (2004-11-05 16:54:00) [6]

Перенос курсора на сервер очень помог, теперь найдя Null, можно писать "Ошибка".
Но есть другая беда. Если и использовать агрегативные функции (типа Avg(1/F1), где F1 иногда м/б 0)  то возникает ошибка, сообщение "Деление на ноль", причем это уже конкретно в JETe, потому как в Access возникает аналогичное сообщение, в DBGrid вообще ничего не появляется.
Но мне жизненно необходимо, чтобы если даже возникало дел. на ноль, писалось "Ошибка" в той ячейке где она возникает. Простой пример: есть база данных - часовые накопления показаний прибора. Энергетику надо посмотретьза месяц инфу по дням (т.е. группировка по часам а затем Sum или Avg).
Допустим в какой-то несчастный час, прибор сбоил и записал 0. И вот из-за одного показания, расчет какой либо формулы в которой нужно деление на это параметр, за целый месяц херится, вместо того, чтобы вывести например
..
25|знач
26|Ошибка
27|знач
Как быть, может есть другие драйвера баз данных, или другая возможность(хранимые пр-ры, или там не знаю). Потому что переводить все формулы создаваемые пользователем, в постфиксную форму и самому вычислять, ой как не хочется.


sniknik   (2004-11-05 12:03:00) [7]

поставь у компанента ADODataSet.CursorLocatoin = clUseServer


Victor!   (2004-11-05 10:30:00) [8]

А мне то чего делать, как мне с JET, этот самый курсор использовать


sniknik   (2004-11-04 17:48:00) [9]

> Попробывал в Accesse, получил:
> (правилн. значение)
> (правилн. значение)
> Ошибка
> (правилн. значение)
серверный курсор используют


Victor!   (2004-11-04 17:20:00) [10]

Попробывал в Accesse, получил:
(правилн. значение)
(правилн. значение)
Ошибка
(правилн. значение)
В JETe сразу "Деление на ноль" и икакой больше инфы.

Может есть какая-нибудь альтернатива JETу, желательно как в Accesse (хотя говорили что JET и Access это одно и тоже, одни и теже запросы они выполняют по-разному)


Victor!   (2004-11-04 14:27:00) [11]

Запрос может быть такого рода: (f1*f2 + f3/f4)/(f5*f6+(f7/f8))  т.е. все что угодно (f1..f8 поля таблицы), арифметическое выражение составляет пользователь (подобно созданию запросов в Access), поэтому проанализировать кождое частное в формуле не представляется возможным.


sniknik   (2004-11-04 11:40:00) [12]

iif(x=0, "дел. на ноль", y/x)


Johnmen   (2004-11-04 11:02:00) [13]

А где сам текст запроса ?


Наверх

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