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

Вниз

Как обойти дел. на ноль в JetSQL   Найти похожие ветки 

 
Victor! ©   (2004-11-04 10:58) [0]

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


 
Johnmen ©   (2004-11-04 11:02) [1]

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


 
sniknik ©   (2004-11-04 11:40) [2]

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


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

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


 
Victor! ©   (2004-11-04 17:20) [4]

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

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


 
sniknik ©   (2004-11-04 17:48) [5]

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


 
Victor! ©   (2004-11-05 10:30) [6]

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


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

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


 
Victor! ©   (2004-11-05 16:54) [8]

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


 
Victor! ©   (2004-11-08 11:10) [9]

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


 
sniknik ©   (2004-11-08 11:15) [10]

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


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

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


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

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


 
sniknik ©   (2004-11-10 12:57) [13]

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



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

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

Наверх




Память: 0.5 MB
Время: 0.025 c
4-1098854619
menart
2004-10-27 09:23
2004.12.12
Active descktop


14-1100873270
by
2004-11-19 17:07
2004.12.12
Есть ли в Delphi 7 Professional компонент TClientDataSet?


8-1095497609
VasRog
2004-09-18 12:53
2004.12.12
Простейший вывод картинки


3-1100521367
VadimK
2004-11-15 15:22
2004.12.12
Создание Cursor в ХП, через компоненты DBExpress


1-1101379411
denis24
2004-11-25 13:43
2004.12.12
findcomponent на другой форме