powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Подсчет уникальных записей в блоке
4 сообщений из 4, страница 1 из 1
Подсчет уникальных записей в блоке
    #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
Подсчет уникальных записей в блоке
    #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
Подсчет уникальных записей в блоке
    #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
Подсчет уникальных записей в блоке
    #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
4 сообщений из 4, страница 1 из 1
Форумы / Oracle Forms [игнор отключен] [закрыт для гостей] / Подсчет уникальных записей в блоке
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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