Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

Как обойти дел. на ноль в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.04 c
1-1101809890
lovres
2004-11-30 13:18
2004.12.12
Подскажите название dll windows, в которой есть функция time


14-1101190317
Rand
2004-11-23 09:11
2004.12.12
Оригинальные кнопочки!


8-1094629162
dedMazDie
2004-09-08 11:39
2004.12.12
Загрузка части картинки


1-1101506237
Pips
2004-11-27 00:57
2004.12.12
Меню


3-1100200640
GL00m
2004-11-11 22:17
2004.12.12
что делать с файлами _qsq*.db





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский