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

Вниз

Как заставить IBQuery или OraQuery вернуть пустой результат   Найти похожие ветки 

 
alexnauz ©   (2010-06-21 13:25) [0]

Доброго дня. Уважаемые Мастера. Использую для заполнения таблицы запрос типа:

select meszap, count(*) from table
where условие
group by meszap

Такой запрос возвращает значения сгруппированные по месяцу результаты, но если за текущий месяц при заданном условии нет записей, то данный месяц вообще игнорируется в результате, т.е. если за февраль не было записей, то будет выведено:

1 - 5
3 - 4
4 - 6

В результате при попытке заполнения таблицы в цикле, где используется Query.Next получаю ерунду. Можно ли заствить Query вернуть пустой результат т.е.

1 - 5
2 - 0
3 - 4
4 - 6

Александр.


 
turbouser ©   (2010-06-21 13:43) [1]


> alexnauz ©   (21.06.10 13:25)  

Сделать можно. С исп. доп. таблицы, с UNION или ХП.
Но лучше сделать что бы при использовании Query.Next текущий результат не казался ерундой.


 
Плохиш ©   (2010-06-21 14:35) [2]


> В результате при попытке заполнения таблицы в цикле, где
> используется Query.Next получаю ерунду.

Проблема написать одно условие сравнения?


 
Вариант   (2010-06-21 14:50) [3]


> alexnauz ©   (21.06.10 13:25)

Если верно понял, проблема в том что нет вообще записей, где например meszap  имеет значение 2 (февраль) или еще какое-либо?
В этом случае действительно будут пропущенные значения.

Оракл почти забыл, как и имена его служебных таблиц, столбцов и т.п., но попробую накидать примерный вариант для Оракла

select T1.M,count(T2.meszap) from
 (select rownum as M from ALL_OBJECTS where rownum < 13) T1
LEFT JOIN
TABLE T2 ON T2.meszap=T1.M and <условие>
GROUP BY T1.M


Идея в формировании псевдо стобца T1.M, который имеет все нужные значения (у нас от 1 до 12) и левое объединение его уже с реальным столбцом реальной таблицы


 
alexnauz ©   (2010-06-21 14:52) [4]

Не проблема включить в цикл изменяемый Query, но описанным выше одним запросом, куда реально входило с десяток всяких sum, целиком заполнялась отчётная таблица и всё прекрасно работало пока не встретилось пустое значение. Написать условие сравнения вполне возможно, но в программе считается семь разных таблиц подобным способом, значит условия сравнения надо писать во всех случаях, причём, учитывая что в программе возможно задавать период счёта (за месяц, за квартал, за год, с марта по ноябрь и т. п.), то условие сравнения выливается не в одну строку текста. Конечно, число строк не пугает, но тогда проще включить в цикл изменяемый Query.



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

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

Наверх




Память: 0.48 MB
Время: 0.049 c
2-1338107276
rikitiki2012
2012-05-27 12:27
2013.03.22
Автоматически прерывает выполнение (BreakPoint в настройках )


2-1337107123
Валерий
2012-05-15 22:38
2013.03.22
Экспорт отчетов Fast Report в Open Office из Delphi


15-1351804905
ПростоФАН
2012-11-02 01:21
2013.03.22
Заказ по дельфи


15-1344107027
Прогер
2012-08-04 23:03
2013.03.22
Делегаты и функторы.


15-1351086265
Дмитрий С
2012-10-24 17:44
2013.03.22
А что нельзя соединяться с базой через ADO с паролем ";"=