ConfigMgr 2007: The report "Computers that have a metered program installed, but have not run the program since a specified date" does not work correctly with most European locale settings

ConfigMgr 2007: The report "Computers that have a metered program installed, but have not run the program since a specified date" does not work correctly with most European locale settings

  • Comments 1
  • Likes

image

Here’s an interesting one you may run into if you’re working with any of the European languages.  This is something scheduled to be fixed in an upcoming release but for now you can use one of the workaround below if you encounter it.

Issue: The report "Computers that have a metered program installed, but have not run the program since a specified date" does not work correctly with most European locale settings.  This report prompts you to enter two values:

1. Last Usage Date
2. Rule name

The problem occurs when:

a. Running the report in context of a user who has a locale where short dates are represented "dd-mm-yyyy" (most European locales)
b. Picking dates suggested by pressing the "Values ..." button or manually entering dates in the dd-mm-yyyy format
c. Then run the report

Cause:  The "dd-mm-yyyy" date entered (either by picking from the list of values or manually entered) is interpreted as a "mm-dd-yyyy" (set dateformat MDT) and the result therefore is either:

1. The report returns incorrect results.

or:

2. Causes an error to be raised (in cases where the "dd-mm-yyyy" date can not be interpreted as a valid "mm-dd-yyyy" date).

Resolution: The following workarounds exist for this issue:

1. Only run the report in context of a user who has English(U.S.) locale settings.

or

2. Take into account that the dates suggested by the user interface need to be "adjusted" before running the report.

or

3. Modify the report.asp file as follows:

The logic in filter.asp that presents the dates to pick from is okay, but when extracting the value to send to the report engine in report.asp, this section could be modified in order to take into account that the user might not run US-English locale settings when entering the "Last usage" value:

Change Report.asp from this:

' report.asp extract begin
For Each ReportParameter In Report.ReportParameters
    ParameterValue = unescape(replace(Request.QueryString(ReportParameter.VariableName), "%", "%25"))
    'If IsEmpty(ParameterValue) Then
    If ParameterValue = "" Then
    Else
        ReportParameter.SuppliedValue = ParameterValue
    End If
Next
' report.asp extract end

To this:

' report.asp extract begin
For Each ReportParameter In Report.ReportParameters
    ParameterValue = unescape(replace(Request.QueryString(ReportParameter.VariableName), "%", "%25"))
    If ParameterValue = "" Then
    Else
        if (ReportParameter.VariableName = "LastUsage") then
            ParameterValue = Month(ParameterValue) & "/" & Day(ParameterValue) & "/" & Year(ParameterValue)
        end if
            ReportParameter.SuppliedValue = ParameterValue
    End If
Next
' report.asp extract end

Hope this helps,

J.C. Hornbeck | Manageability Knowledge Engineer

Your comment has been posted.   Close
Thank you, your comment requires moderation so it may take a while to appear.   Close
Leave a Comment