[Solved] Create permission for running report

andri0111
Member Posts: 5
Hi,
I try to create permission for running report, first I create new table
User Name | Report ID | Location ID
UserTest | 50000 | Store02
UserTest | 50000 | Store03
UserTest | 50000 | Store04
I already try, if UserTest running Report 50000 with filter Item.Store Filter 'Store02|Store03' it's ok
the problem is when I try filter 'Store02|Store04'
I try to create permission for running report, first I create new table
User Name | Report ID | Location ID
UserTest | 50000 | Store02
UserTest | 50000 | Store03
UserTest | 50000 | Store04
I already try, if UserTest running Report 50000 with filter Item.Store Filter 'Store02|Store03' it's ok
the problem is when I try filter 'Store02|Store04'
OnInit EVALUATE(varReportID,COPYSTR(CurrReport.OBJECTID(FALSE),8,STRLEN(CurrReport.OBJECTID(FALSE)) - 7)); // get ID report recRtlUsrStpRprt.SETRANGE("User Name",USERID); recRtlUsrStpRprt.SETRANGE("Report ID",varReportID); IF recRtlUsrStpRprt.FINDSET THEN BEGIN varFilter := ''; REPEAT IF varFilter = '' THEN varFilter := recRtlUsrStpRprt."Location ID" ELSE varFilter += '|' + recRtlUsrStpRprt."Location ID"; UNTIL recRtlUsrStpRprt.NEXT = 0; END ELSE ERROR(Text01,USERID); OnPreDataItem IF STRPOS(varFilter,Item.GETFILTER("Store Filter")) = 0 THEN BEGIN ERROR(Text02,USERID); CurrReport.QUIT; END;
0
Answers
-
[Topic moved from 'NAV Tips & Tricks' forum to 'NAV Three Tier' forum]
Regards,Alain Krikilion
No PM,please use the forum. || May the <SOLVED>-attribute be in your title!0 -
Today I try use this, and solved the problem
OnInitReport CheckPermissionReport(CurrReport.OBJECTID(FALSE),USERID,FALSE,''); OnPreDataItem CheckPermissionReport(CurrReport.OBJECTID(FALSE),USERID,TRUE,Item.GETFILTER("Store Filter")); Local CheckPermissionReport EVALUATE(lvarReportID,COPYSTR(pReportID,8,STRLEN(pReportID) - 7)); // get ID report IF pCheckStoreID THEN BEGIN // check Store Filter CLEAR(lrecRtlUsrStpRprt); lrecRtlUsrStpRprt.RESET; lrecRtlUsrStpRprt.SETRANGE("User Name",pUserID); lrecRtlUsrStpRprt.SETRANGE("Report ID",lvarReportID); lrecRtlUsrStpRprt.SETFILTER("Location ID",pStoreFilter); IF NOT lrecRtlUsrStpRprt.FINDSET THEN ERROR(Text02,pUserID); END ELSE BEGIN // check Report ID CLEAR(lrecRtlUsrStpRprt); lrecRtlUsrStpRprt.RESET; lrecRtlUsrStpRprt.SETRANGE("User Name",pUserID); lrecRtlUsrStpRprt.SETRANGE("Report ID",lvarReportID); IF NOT lrecRtlUsrStpRprt.FINDFIRST THEN ERROR(Text01,pUserID); END;
0 -
Today I try use this, and solved the problem
OnInitReport CheckPermissionReport(CurrReport.OBJECTID(FALSE),USERID,FALSE,''); OnPreDataItem CheckPermissionReport(CurrReport.OBJECTID(FALSE),USERID,TRUE,Item.GETFILTER("Store Filter")); Local CheckPermissionReport EVALUATE(lvarReportID,COPYSTR(pReportID,8,STRLEN(pReportID) - 7)); // get ID report IF pCheckStoreID THEN BEGIN // check Store Filter CLEAR(lrecRtlUsrStpRprt); lrecRtlUsrStpRprt.RESET; lrecRtlUsrStpRprt.SETRANGE("User Name",pUserID); lrecRtlUsrStpRprt.SETRANGE("Report ID",lvarReportID); lrecRtlUsrStpRprt.SETFILTER("Location ID",pStoreFilter); IF NOT lrecRtlUsrStpRprt.FINDSET THEN ERROR(Text02,pUserID); END ELSE BEGIN // check Report ID CLEAR(lrecRtlUsrStpRprt); lrecRtlUsrStpRprt.RESET; lrecRtlUsrStpRprt.SETRANGE("User Name",pUserID); lrecRtlUsrStpRprt.SETRANGE("Report ID",lvarReportID); IF NOT lrecRtlUsrStpRprt.FINDFIRST THEN ERROR(Text01,pUserID); END;
update for CheckPermissionReportEVALUATE(lvarReportID,COPYSTR(pReportID,8,STRLEN(pReportID) - 7)); // get ID report IF pCheckStoreID THEN BEGIN // check Store Filter CLEAR(lrecStore); lrecStore.RESET; lrecStore.SETFILTER("No.",pStoreFilter); IF lrecStore.FINDSET THEN BEGIN lvarCheckStoreLoc := ''; REPEAT CLEAR(lrecRtlUsrStpRprt); lrecRtlUsrStpRprt.RESET; lrecRtlUsrStpRprt.SETRANGE("User Name",pUserID); lrecRtlUsrStpRprt.SETRANGE("Report ID",lvarReportID); lrecRtlUsrStpRprt.SETRANGE("Location ID",lrecStore."No."); IF lrecRtlUsrStpRprt.FINDFIRST THEN lvarCheckStoreLoc += '1' ELSE lvarCheckStoreLoc += '0'; UNTIL lrecStore.NEXT = 0; END; IF STRPOS(lvarCheckStoreLoc,'0') <> 0 THEN ERROR(Text02,pUserID); END ELSE BEGIN // check Report ID CLEAR(lrecRtlUsrStpRprt); lrecRtlUsrStpRprt.RESET; lrecRtlUsrStpRprt.SETRANGE("User Name",pUserID); lrecRtlUsrStpRprt.SETRANGE("Report ID",lvarReportID); IF NOT lrecRtlUsrStpRprt.FINDFIRST THEN ERROR(Text01,pUserID); END;
0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions