You do not have to change every report.
The process below captures user and report and number of times run and last date run.
It could capture specifics on every time run but that wasn't necessary for my needs.
Create a Report Usage log table:
Enabled Field No. Field Name Data Type Length Description
Yes 1 Report ID Integer
Yes 2 User ID Code 20
Yes 3 No. Of Runs Integer
Yes 4 Last Run Date Date
Yes 5 Description Text 50
Create a Report Usage log Codeunit (Single Instance)
Add a function:
AddReport(ReportID : Integer) Add report to temp table
WITH RepUsageTemp DO BEGIN
IF NOT RepUsageTemp.GET(ReportID,USERID) THEN BEGIN
INIT;
"Report ID" := ReportID;
"User ID" := USERID;
INSERT;
END;
"No. Of Runs" := "No. Of Runs" + 1;
"Last Run Date" := TODAY;
MODIFY;
END;
Add a function:
SaveUsage() Move entries from temp table to real table
WITH RepUsageTemp DO BEGIN
IF FINDSET THEN REPEAT
IF NOT RepUsage.GET("Report ID","User ID") THEN BEGIN
RepUsage.INIT;
RepUsage."Report ID" := "Report ID";
RepUsage."User ID" := USERID;
IF Object.GET(3,'',"Report ID") THEN
RepUsage.Description := Object.Name;
RepUsage.INSERT;
END;
RepUsage."No. Of Runs" := RepUsage."No. Of Runs" + "No. Of Runs";
RepUsage."Last Run Date" := TODAY;
RepUsage.MODIFY;
UNTIL NEXT = 0;
DELETEALL;
END;
There seems to be a "bug" in your code. (see "Start edit Sog")
WITH RepUsageTemp DO BEGIN
IF FINDSET THEN REPEAT
IF NOT RepUsage.GET("Report ID","User ID") THEN BEGIN
RepUsage.INIT;
RepUsage."Report ID" := "Report ID";
RepUsage."User ID" := USERID;
IF Object.GET(3,'',"Report ID") THEN
RepUsage.Description := Object.Name;
RepUsage.INSERT;
END;
RepUsage."No. Of Runs" := RepUsage."No. Of Runs" + "No. Of Runs";
//Start edit Sog
// RepUsage."Last Run Date" := TODAY;
RepUsage."Last Run Date" := "Last Run Date";
//End edit Sog
RepUsage.MODIFY;
UNTIL NEXT = 0;
DELETEALL;
END;
This because some users do not log off their pc when they go home.
And when they finaly log off, a couple of days could have passed.
|Pressing F1 is so much faster than opening your browser| |To-Increase|
Comments
The process below captures user and report and number of times run and last date run.
It could capture specifics on every time run but that wasn't necessary for my needs.
Create a Report Usage log table:
Enabled Field No. Field Name Data Type Length Description
Yes 1 Report ID Integer
Yes 2 User ID Code 20
Yes 3 No. Of Runs Integer
Yes 4 Last Run Date Date
Yes 5 Description Text 50
Create a Report Usage log Codeunit (Single Instance)
Add a function:
AddReport(ReportID : Integer) Add report to temp table
Add a function:
SaveUsage() Move entries from temp table to real table
In CU1 add
global RptUsageMgt CodeUnit
in the FindPrinter function add
In function LogInEnd add
I hope this helps
Steve
And when they finaly log off, a couple of days could have passed.
|To-Increase|