Гость
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Подсчет уникальных записей в блоке / 4 сообщений из 4, страница 1 из 1
22.02.2013, 09:21
    #38161735
mRdUKE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет уникальных записей в блоке
Может кто-нибудь подскажет рациональное решение?
Есть блок, на основе вью, 30 полей, поиск на форме осуществляется по CTRL+F11, по любым полям.
Нужно подсчитать итог, кол-во и сумму некоторых полей, есть всем известное свойство Calculation,
там это можно сделать, но как быть с уникальными значениями, т.е. например, имеем:
x1 | s1 | y1 | z1
x2 | s2 | y1 | z1
x3 | s3 | y2 | z2
x4 | s4 | y2 | z2
x5 | s5 | y3 | z3
______________
первый столбец = 5 записей, второй столбец сумма= s1+s2+s3+s4+s5, с этими всё ясно
третий столбец = 3 записи, сумма четвертого = z1+z2+z3

По блоку скакать, перебирая записи - не вариант. Можно ещё в Get_Block_Property вытащить LAST_QUERY,
оттуда забрать WHERE, и отдельным запросом к базе distinct'ом подсчитать уникальные, но может
кто знает или посоветует другие варианты?
...
Рейтинг: 0 / 0
25.02.2013, 12:58
    #38164532
efendi
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет уникальных записей в блоке
Ну, навскидку, добавить множитель:

x1 | s1 | y1 | 1 | z1 | 1
x2 | s2 | y1 | 0 | z1 | 0
x3 | s3 | y2 | 1 | z2 | 1
x4 | s4 | y2 | 0 | z2 | 0
x5 | s5 | y3 | 1 | z3 | 1
...
Рейтинг: 0 / 0
05.03.2013, 09:21
    #38174142
mRdUKE
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет уникальных записей в блоке
efendi,

Со множителями не совсем понял, вообщем сделал так, если кому интересно:
- создал отдельный блок SX, с итемами "уникальных" сумм, типом From clause query
- в основном блоке V_PK, в триггере KEY-EXEQRY:
Код: plsql
1.
EXECUTE_QUERY; S_X;


где S_X процедура:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
PROCEDURE S_X IS 
	lq varchar2(2000); 
	iw number; 
	lw varchar2(2000);
begin
	lq:=Get_Block_Property('V_PK', LAST_QUERY);
	iw:=instr(lq, 'WHERE'); 
	lw:='(SELECT count(id) DC_PRE, sum(zo1) DS_PRE, sum(zo2) DV_PRE FROM ((SELECT id,zo1,zo2 FROM V_PK WHERE'||substr(lq,iw+5)||' GROUP BY id)))';
	Set_Block_Property('SX',Query_Data_Source_Name,lw); 
	GO_BLOCK('SX'); 
	Execute_Query; 
end;
...
Рейтинг: 0 / 0
05.03.2013, 11:17
    #38174286
OldBoyOdeSu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Подсчет уникальных записей в блоке
mRdUKE,

сильно не вникал, и не пользовался ни разу, может щас глупость скажу, но есть свойство
Calculation Mode Property
Formula 
Indicates the item's value will be calculated as the result of a user-written formula. You must enter a single PL/SQL expression for an item's formula. The expression can compute a value, and also can call a Oracle Forms or user-written subprogram.

я бы глянул можно ли её применить в этом случае
...
Рейтинг: 0 / 0
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Подсчет уникальных записей в блоке / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]