Показать сообщение отдельно
Старый 10.04.2007, 19:35   #18  
FirstOnly is offline
FirstOnly
Участник
 
7 / 10 (1) +
Регистрация: 29.03.2007
Олег, воспользовался вашим кодом и наткнулся на такую проблему.
Создаю две группы пользователей. Накладываю ограничения на таблицу ProdTable по связанным таблицам. Отношу пользоватлеля к обеим группам, но в результате получаю ограничения только одного пользователя.

Первая группа пользователей:
ProdTable ограничение по полю номенклатура, и по полю статус производственного заказа.

Вторая группа пользователей:
ProdTable критерий по статусу производственного заказа.
ProdTable связываю с таблицей ProdBOM (связь 1:n). Накладываю ограничения по полю номенклатура ProdBOM.
ProdTable связываю с таблицей ProdJournalBOM (связь 1:n) критерий не задаю.

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

План исполнения:

Код:
 
SELECT A.ITEMID,A.NAME,A.PRODGROUPID,A.PRODSTATUS,A.PRODTYPE,A.QTYSCHED,A.QTYSTUP,A.DLVDATE,A.STUPDATE,A.FINISHEDDATE,A.SCHEDSTART,A.SCHEDEND,A.HEIGHT,A.WIDTH,A.DEPTH,A.DENSITY,A.QTYCALC,A.REALDATE,A.RESERVATION,A.PRODPOSTINGTYPE,A.INVENTTRANSID,A.DIMENSION,A.DIMENSION2_,A.DIMENSION3_,A.INVENTREFTYPE,A.INVENTREFID,A.INVENTREFTRANSID,A.COLLECTREFLEVEL,A.COLLECTREFPRODID,A.BOMDATE,A.BACKORDERSTATUS,A.PRODPOOLID,A.PROFITSET,A.CALCDATE,A.REMAININVENTPHYSICAL,A.BOMID,A.DEL_CONFIGID,A.REQPLANIDSCHED,A.REQPOID,A.REFLOOKUP,A.PRODID,A.INVENTDIMID,A.PRODORIGID,A.PRODPOSITION,A.CREATEDDATE,A.CREATEDTIME,A.CREATEDBY,A.RECVERSION,A.RECID,B.INVENTDIMID,B.INVENTBATCHID,B.INVENTSERIALID,B.INVENTLOCATIONID,B.CONFIGID,B.INVENTSIZEID,B.INVENTCOLORID,B.INVENTGTDID_RU,B.EMPLRESPONSIBLEID_RU,B.RECVERSION,B.RECID
FROM PRODTABLE A,INVENTDIM B
WHERE ((A.DATAAREAID=?)
AND (((A.PRODSTATUS=?) OR ((((A.ITEMID=?) OR (A.ITEMID=?)) OR (A.ITEMID=?))
AND ((A.BACKORDERSTATUS>=?)
AND (A.BACKORDERSTATUS<=?))))
AND ((A.PRODSTATUS=?) OR ((((A.ITEMID=?) OR (A.ITEMID=?)) OR (A.ITEMID=?))
AND ((A.BACKORDERSTATUS>=?)
AND (A.BACKORDERSTATUS<=?))))))
AND ((B.DATAAREAID=?)
AND (A.INVENTDIMID=B.INVENTDIMID))
AND EXISTS (SELECT 'X'
FROM PRODJOURNALBOM C
WHERE ((C.DATAAREAID=?)
AND (A.PRODID=C.PRODID))
AND EXISTS (SELECT 'X'
FROM PRODBOM D
WHERE ((D.DATAAREAID=?)
AND ((((((D.ITEMID=?) OR (D.ITEMID=?)) OR (D.ITEMID=?))
AND (A.PRODID=D.PRODID))
AND ((((((((D.ITEMID=?) OR (D.ITEMID=?)) OR (D.ITEMID=?)) OR (D.ITEMID=?)) OR (D.ITEMID LIKE ? ESCAPE '\' )) OR (D.ITEMID LIKE ? ESCAPE '\' )) OR (D.ITEMID LIKE ? ESCAPE '\' )) OR (D.ITEMID LIKE ? ESCAPE '\' )))
AND ((((((((D.ITEMID=?) OR (D.ITEMID=?)) OR (D.ITEMID=?)) OR (D.ITEMID=?)) OR (D.ITEMID LIKE ? ESCAPE '\' )) OR (D.ITEMID LIKE ? ESCAPE '\' )) OR (D.ITEMID LIKE ? ESCAPE '\' )) OR (D.ITEMID LIKE ? ESCAPE '\' ))))))
ORDER BY A.DATAAREAID DESC,A.PRODID DESC OPTION(FAST 1,LOOP JOIN)