Článek: AN0001853Aktualizováno::
V některých případech potřebujeme v dotazu vrátit záznamy pro konkrétní detail záznamu. V ObjectGears není takovýto parametr předáván do dotazu, ale je zohledněn při filtrování v zobrazení seznamu záznamů.
Popis funkcionality
V entitě Změnový požadavek (RFC) je k dispozci dotaz Realizace RFC - otevřené případy. Tento dotaz se váže ke konkrétnímu záznamu Změnového požadavku a zobrazuje s ním související entity.
Popis řešení
Vytvoříme dotaz, zobrazující požadovaná data. Dotaz bude také vracet sloupec chr_id obsahující odkaz na Změnový požadavek. Tento sloupec v dotazu nebudeme zobrazovat - v detailu sloupce dotazu tedy odškrtneme volby Zobrazit na formuláři, Zobrazit v seznamu a Zobrazit v detailním seznamu.
SELECT chr.id AS [chr___change_request], r.name AS Request, tc.code AS Test_case, uat.name AS UAT, tcs.name AS Test_case_UAT_status, d.id AS Defect___defects, ds.name AS Defect_status,
case
when uat2.id = uat.id then 'Ano'
else null
end UAT_for_PROD_Release,
chr.id AS chr_id
FROM {{:class.change_request:}} chr
LEFT JOIN {{:class.request:}} r ON r.rfc = chr.id
LEFT JOIN {{:class.project-phase:}} pph ON pph.id = chr.[project-phase]
LEFT JOIN {{:class.project:}} p ON chr.project = p.id
LEFT JOIN {{:class.request:test-case:}} rtc ON rtc.DataRowId = r.id
LEFT JOIN {{:class.test-case:}} tc ON tc.id = rtc.LinkDataRowId
LEFT JOIN {{:class.test-case-for-uat:}} tcfu ON tcfu.[test-case] = tc.id
LEFT JOIN {{:class.test-case-status:}} tcs ON tcfu.status = tcs.id
LEFT JOIN {{:class.uat:}} uat ON tcfu.uat = uat.id
LEFT JOIN {{:class.defects:}} d ON tcfu.id = d.[test-case-for-uat]
LEFT JOIN {{:class.defect-status:}} ds ON ds.id = d.status
LEFT JOIN {{: class.release:change_request:}} rechr ON rechr.LinkDataRowId = chr.id
LEFT JOIN {{:class.release:}} re ON re.id = rechr.DataRowId
LEFT JOIN {{:class.uat:}} uat2 ON uat2.id = re.uat_for_prod_release
WHERE (tcs.id = 2 OR tcs.id = 4 OR tcs.id IS NULL) AND (ds.id IS NULL or ds.id = 1)
Dotaz chceme volat pro konkrétní záznam Změnového požadavku. Proto na třídě Změnový požadavek vytvoříme tlačítko Realizace RFC - otevřené případy, které bude typu Skript. V detailu tlačítka zaškrtneme Zobrazit v seznamu v kontextovém menu, Zobrazit v detailu v kontextovém menu a Zobrazit při změně záznamu. Ve skriptu se vytváří URL na dotaz obsahující proměnnou DrId a hodnotou Id záznamu Změnového požadavku, z něhož se dotaz volá. Nakonec se toto URL otevře.
var q = OG.Query.GetByCode( OGModel.Id, 'rfc_readiness_open_cases');
var url = 'Datas.aspx?QId=' + q.Id + '&DrId=' + OGActualDataRowId;
OGForm.RedirectTo(url);
Abychom zajistili zobrazení pouze záznamů týkajících se změnového požadavku, z něhož byl dotaz volán, nastavíme v detailu dotazu skript pro Seznam záznamů. Ve skriptu hledáme řetězec DrId v URL, a pokud je nalezeno, filtrujeme seznam záznamů dotazu ve sloupci chr_id, obsahujícím Id změnového požadavku, na hodnotu předanou v URL proměnné DrId.
function OnCreateFilter()
{
var drId = OGForm.QueryString.GetInt( 'DrId');
if ( drId != null)
{
var c = OG.Column.GetByCode( OGQuery.Id, 'chr_id');
OGDataRowFilter.SetColumnData(c.Id, drId);
}
}