powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN. Как сочетать фильтры и внешние параметры?
17 сообщений из 17, страница 1 из 1
ZEN. Как сочетать фильтры и внешние параметры?
    #36320109
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть табличка... В ней есть фильтры... Есть метод который генерит SQL-запрос в сочетании с фильтрами.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
<tablePane 
	id="tpJob" 
	tableName="wrk.Job" 
	valueColumn="ID"
	pageSize="50" 
	useSnapshot="true" 
	caption="Работы" 
	onselectrow='zenPage.Select(zenThis.getValue("ID"))'
	ondblclick='zenPage.Edit(zenThis.getValue("ID"));' 
	OnCreateResultSet="CrtSQL"
>
	<column 
		header="Id" 
		colName="ID" 
		hidden="true"
	/>
	<column 
		header="Название" 
		colName="Name" 
		filterType="text"
	/>
	<column 
		header="Исполнители" 
		colName="Member" 
		width="200px"
		filterType="query"
		filterQuery="Select Name From wrk.Member Order by Name"
	/>
	<column 
		header="Завершение" 
		colName="Brk" 
		width="120px"
	/>
	<column 
		header="Квартал" 
		colName="Kvartal" 
		width="130px"
	/>
	<column 
		header="Ok" 
		colName="Ok" 
		width="40px"
		filterType="enum"
		filterEnum="Да,Нет"
	/>
</tablePane>
...
/// Построение запроса для отображения таблицы
Method CrtSQL(Output tSC As %Status, pInfo As %ZEN.Auxiliary.QueryInfo) As %ResultSet
{
	Set tRS = ""
	
	Set tSC = $$$OK
	Set tSELECT = "ID,Name,"
	Set tSELECT = tSELECT_"wrk.Job_AllMember(ID) as Member,"
	Set tSELECT = tSELECT_"wrk.sys_Month(dEnd,1) as Brk,"
	Set tSELECT = tSELECT_"wrk.Plan_KvrToStr(Plan->ID) as Kvartal,"
	Set tSELECT = tSELECT_"Case wrk.Job_Ok(ID) "
	Set tSELECT = tSELECT_"When 1 Then 'Да' "
	Set tSELECT = tSELECT_"End as Ok"
	Set tFROM = "wrk.Job as a"
	Set tWHERE = ""
	Set tORDER = "dCreate Desc,Member"
	// строим критерии отбора по фильтрам
	If $g(pInfo.filters("Name"))'="" {
		Set tWHERE = tWHERE_"Name [ '"_pInfo.filters("Name")_"' "
	}
	If $g(pInfo.filters("Member"))'="" {
		Set:tWHERE'="" tWHERE=tWHERE_" AND "
		Set tWHERE=tWHERE_"EXISTS (Select * From wrk.Stage as b Where b.Job=a.ID And b.Member->Name='"_ pInfo.filters("Member")_"')"
	}
	If $g(pInfo.filters("Ok"))'="" {
		Set:tWHERE'="" tWHERE=tWHERE_" AND "
		s ok=0
		s:pInfo.filters("Ok")="Да" ok=1
		Set tWHERE=tWHERE_"wrk.Job_Ok(ID)="_ok
	}
	Set sql = "SELECT " _ tSELECT _ " FROM " _ tFROM
	Set:tWHERE'="" sql = sql _ " WHERE " _tWHERE
	Set:tORDER'="" sql = sql _ " ORDER BY " _tORDER
	Set tRS = ##class(%ResultSet).%New()
	Set tSC = tRS.Prepare(sql)
	Set pInfo.queryText = sql
	Quit tRS
}

С этим вроде все ясно...
Но есть другая табличка и там уже есть внешний параметр

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
..
/// Id элемента
Property idItem As %ZEN.Datatype.id(ZENURL = "id");
..
<tablePane 
	id="tpJob" 
	tableName="wrk.Job" 
	valueColumn="ID"
	pageSize="60" 
	useSnapshot="true" 
	caption="Работы" 
	sql="
		Select 
			ID,
			wrk.Job_AllMember(ID) as Members,
			Name,
			wrk.sys_Month(dEnd,1) as Break,
			Case wrk.Job_Ok(ID) 
			When 1 Then 'Да'
			End as Ok
		From wrk.Job
==>		Where Plan->ID=?
		Order by dEnd,Members
	"
	onselectrow='zenPage.Select(zenThis.getValue("ID"))'
	ondblclick='zenPage.Edit(zenThis.getValue("ID"));' 
>
	<parameter 
		id="pIdJob"
		value="#(%page.idItem)#"
	/>
	<column 
		header="Id" 
		colName="ID" 
		hidden="true"
	/>
	<column 
		header="Исполнители" 
		colName="Members" 
		width="200px"
	/>
	<column 
		header="Название работы" 
		colName="Name" 
	/>
	<column 
		header="Завершение" 
		colName="Break" 
		width="120px"
	/>
	<column 
		header="Ok" 
		colName="Ok" 
		width="30px"
	/>
</tablePane>

Как в методе (аналоге CrtSQL) получить доступ к значению параметра?
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36320257
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тут тебе лучше всего расписать sql по колонкам, тогда будет все работать
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36320301
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как это

Ymka2007расписать sql по колонкам

?
Я с таким подходом еще не знаком... Примерчик можно?
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36320445
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смотри ZENTest.TableTest.cls
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36320850
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну это только завтра...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36321428
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007смотри ZENTest.TableTest.cls

Что-то

Код: plaintext
Method CreateRS(...)

Там вообще не используется... Как там используют

Код: plaintext
<parameter id="P1" value="B"/>

что-то тоже не нашел... Искал "P1" (нет совсем) и "?" (попадались в скрипте и url)...

Но мыслишка промелькнула вот какая... Если я сделаю скрытый столбец и в него запишу фильтрацию по параметру - наверное это будет "оно"? Что-то типа такого...

Код: plaintext
1.
2.
3.
4.
5.
6.
<column 
	colName="myCol" 
	filterType="text"
	filterOp="="
	filterValue="#(%page.idItem)#"
/>
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36321729
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такое

Код: plaintext
filterValue="#(%page.idItem)#"

не получилось. Там наверное можно использовать только скаларное значение...
В итоге сделал вот так

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
/// Построение запроса для отображения таблицы
Method CrtSQL(Output tSC As %Status, pInfo As %ZEN.Auxiliary.QueryInfo) As %ResultSet
{
	Set tRS = ""
	
	Set tSC = $$$OK
	Set tSELECT = "ID,"
	Set tSELECT = tSELECT_"wrk.Job_AllMember(ID) as Member,"
	Set tSELECT = tSELECT_"Name,"
	Set tSELECT = tSELECT_"wrk.sys_Month(dEnd,1) as Brk,"
	Set tSELECT = tSELECT_"Case wrk.Job_Ok(ID) "
	Set tSELECT = tSELECT_"When 1 Then 'Да' "
	Set tSELECT = tSELECT_"End as Ok"
	Set tFROM = "wrk.Job as a"
	Set tWHERE = ""
	Set tORDER = "dEnd,Member"
	// строим критерии отбора по фильтрам
	Set tWHERE = tWHERE_"Plan = "_%page.idItem
	If $g(pInfo.filters("Name"))'="" {
		Set:tWHERE'="" tWHERE=tWHERE_" AND "
		Set tWHERE = tWHERE_"Name [ '"_pInfo.filters("Name")_"' "
	}
	If $g(pInfo.filters("Member"))'="" {
		Set:tWHERE'="" tWHERE=tWHERE_" AND "
		Set tWHERE=tWHERE_"EXISTS (Select * From wrk.Stage as b Where b.Job=a.ID And b.Member->Name='"_ pInfo.filters("Member")_"')"
	}
	If $g(pInfo.filters("Ok"))'="" {
		Set:tWHERE'="" tWHERE=tWHERE_" AND "
		s ok= 0 
		s:pInfo.filters("Ok")="Да" ok= 1 
		Set tWHERE=tWHERE_"wrk.Job_Ok(ID)="_ok
	}
	Set sql = "SELECT " _ tSELECT _ " FROM " _ tFROM
	Set:tWHERE'="" sql = sql _ " WHERE " _tWHERE
	Set:tORDER'="" sql = sql _ " ORDER BY " _tORDER
	Set tRS = ##class(%ResultSet).%New()
	Set tSC = tRS.Prepare(sql)
	Set pInfo.queryText = sql
	Quit tRS
}
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36321997
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. убираешь описание sql из tablepane
2. все колонки прописываешь в колонках (colName="field1", если вычисляемое, то через colExprestion="field1->Name" c обязательным указанием параметра colName="f1")
3. в tablepane устанавливаешь:
а) tableName="твоя таблица"
б) showQuery="1" (для отладки)
в) maxRows="сколько надо"
г) orderByClause="dEnd,Members"
д) whereClause="#(%page.idItem)#"
4. запускаещь в браузер и смотришь
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322027
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007 , вполне исчерпывающе! Спасибо...
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322032
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
для ТР помоему 4 способа задания запроса
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322081
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007 д) whereClause="#(%page.idItem)#"

Вот это не совсем понял... Т.е. это вроде условия отбора записей для всей таблицы... Но условия-то как такового нет.
Может нечто вроде этого?

Код: plaintext
whereClause="FileName=#(%page.idItem)#"
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322093
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322099
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Plan->ID=#(...)#
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322101
Ymka2007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вот у меня:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
<tablePane id="tablePlayer" name="tabpl"
caption="Список зарегистрированных игроков РТТ"
tableName="RTT.PLAYER"
autoExecute="true"
headerLayout="headersOnTop"
initialExecute="false"
orderByClause="fullFIO"
showZebra="true"
useKeys="true"
useSnapshot="true"
pageSize="10" maxRows="5000"
showQuery="0"
onupdate="zenPage.OnRefresh(zenThis);"
onrefresh="zenThis.setProperty('selectedIndex',-1);"
onselectrow="zenPage.rowSelected();"
onkeypress="return zenPage.tabPLKeyPress(event);"
valueColumn="tplID"
showRowSelector="true">
<column colExpression="ID" colName="tplID" hidden="true" width="50"/>
<column colName="anketaRegNum" header="Рег. номер" width="60"
filterType="text" 
filterOp="="/>
<column colName="fullFIO" header="ФИО" style="text-align: left;" 
filterType="text" 
filterOp="%STARTSWITH"/>
<column	colExpression="TO_CHAR(dOb,'dd/mm/yyyy')" colName="dOb" header="Дата рождения" width="70"/>
<column colExpression="idCCRPmg->idCity->Name" colName="City" width="200"
header="Город"
filterType="text"
filterOp="%STARTSWITH"/>
</tablePane>
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322102
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага, понятно.
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322701
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ymka2007 , а если я джоины использую? Их как писать? Так

Код: plaintext
tableName="wrk.Task as a INNER JOIN wrk.Job as b ON (a.ID=b.Task)LEFT OUTER JOIN wrk.Stage as c ON (b.ID=c.Job)"
...
Рейтинг: 0 / 0
ZEN. Как сочетать фильтры и внешние параметры?
    #36322717
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает!
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ZEN. Как сочетать фильтры и внешние параметры?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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