Symptom
- When more than one parameter is set in code, the following exception is thrown:
Exception: CrystalDecisions.CrystalReports.Engine.DataSourceException:
Database Connector Error: ' [Database Vendor Code: 257 ]' Error in File
cspRpt_REDACTED_Qry_Rate_Per_Month_Wk {DA3493B8-490B-40AB-A4DE- D1580716B30C}.rpt: Database Connector Error --->
System.Runtime.InteropServices.COMException: Database Connector Error: '[Database Vendor Code: 257 ]'
Error in File cspRpt_REDACTED_Qry_Rate_Per_Month_Wk {DA3493B8-490B-40AB-A4DE-D1580716B30C}.rpt: Database Connector Error at
CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass.Export(ExportOptions pExportOptions, RequestContext pRequestContext) at
CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportR equestContext reqContext)
Environment
- Crystal Reports for Visual Studio 2010
- Visual Studio 2010
- MS SQL 2005 \ 2008
- Upgrade from Crystal Reports XI R2 (11.5) to Crystal Reports for Visual Studio 2010 (13.x)
Reproducing the Issue
-
Use the following code to set more than one parameter:
private void ReportDocumentSetParameters()
{
SetCrystalParamsToNull(m_ReportDocument);
SetCrystalParam(m_ReportDocument, "@AA", "100");
SetCrystalParam(m_ReportDocument, "@BB", "2");
SetCrystalParam(m_ReportDocument, "@CC", null);
}
Cause
- Previous to CRVS2010, crParamField.ApplyCurrentValues checked internally and automatically to determine where a particular parameter belongs
- In CRVS2010, crParamField.ApplyCurrentValues assumes the order of the parameters passed in, is the same as the order in the report
Resolution
- Create a Case statement that tests for the parameter
- The following is a work-around for the issue:
private void ReportDocumentSetParameters(CrystalDecisions.CrystalReports.Engine.ReportDocument rpt)
{
foreach (CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition pField in (ParameterFieldDefinitions) rpt.DataDefinition.ParameterFields)
{
switch (pField.Name)
{
case "@AA":
{
SetCrystalParam(rpt, "@AA", "100");
}
break;
case "@BB":
{
SetCrystalParam(rpt, "@BB", "2");
}
break;
case "@CC":
{
SetCrystalParam(rpt, "@CC", null);
}
break;
}
}
Keywords
KBA , BI-DEV-NET-SDK , .NET SDK / COM SDK , Bug Filed