This seems unnecessarily complex for what you're doing.
That aside use this code in the ON OPEN of the report YEARLY NCR REPORT instead of what you're currently using
Code:
On Error GoTo ErrorHandler
Dim strSQL As String
If IsNull(TempVars![Display]) Or IsNull(TempVars![Group By]) Or IsNull(TempVars![Year]) Then
DoCmd.OpenForm "frmNCRReportsDialog"
Cancel = True
Exit Sub
End If
strSQL = "TRANSFORM CCur(Nz(Sum([NCR]),0)) AS X"
strSQL = strSQL & " SELECT [" & TempVars![Display] & "] as NCRGroupingField FROM [qryNCRAnalysis] "
strSQL = strSQL & " Where [Year]=" & TempVars![Year]
If Not IsNull(Forms!frmncrreportsdialog!lstVendorFilter) Then
strSQL = strSQL & " AND [Vendor]='" & Forms!frmncrreportsdialog!lstVendorFilter & "'"
End If
strSQL = strSQL & " GROUP BY [" & TempVars![Group By] & "], [" & TempVars![Display] & "]"
strSQL = strSQL & " Pivot [qryNCRAnalysis].[Quarter] In (1,2,3,4)"
Me.RecordSource = strSQL
Me.NCRGroupingField_Label.Caption = TempVars![Display]
Done:
Exit Sub
ErrorHandler:
MsgBox Err.Description
Resume Done
The problem is that your 'final' version of the query does not contain the vendor name so you have to make it part of the criteria driving the generated crosstab.