Hello,
I am trying to show a Crystal Reports 10 Enterprise report in an ASP.NET
page (C#). I can run the report via the admin console just fine. When I try
to show the report, after setting up its parameters, I get:
"Value does not fall within the expected range."
How are people interacting with the Crystal Report viewer to set the
parameters on a report? I haven't found any useful documentation at
BusinessObjects .com or even with the crystal distribution. Following my
closing of this post is the code I use to setup the report for viewing.
Thanks
-- Jake
[ CODE ]
// Setup the crystal enterprise logon information
SessionMgr sm = new SessionMgr();
EnterpriseSessi on es = sm.Logon(uname, pwd, cms, auth);
//
// Discover the crystal ID of the report to view
//
EnterpriseServi ce service = es.GetService(" InfoStore");
InfoStore info = new InfoStore(servi ce);
string query = "Select * From CI_INFOOBJECTS Where SI_PROGID =
'CrystalEnterpr ise.Report' AND SI_ID=" + ReportID + " AND SI_INSTANCE = 0";
InfoObjects objs = info.Query(quer y);
//
// Setup the report and parameters.
//
if(objs.Count > 0)
{
// The InfoObjects collection is '1' based, not '0' based.
Report rpt = (Report)objs[1];
EnterpriseServi ce es2 = es.GetService(" PSReportFactory ");
PSReportFactory ps = (PSReportFactor y)es2.Interface ;
ReportSource rs = ps.OpenReportSo urce(rpt.ID);
if(Report.HasPa rameters)
{
CrystalReportVi ewer1.Parameter FieldInfo.Clear ();
ReportParameter s pms = rpt.ReportParam eters;
ParameterFields pfs = new ParameterFields ();
foreach(ReportP arameter rp in pms)
{
ParameterField pf = new ParameterField( );
ParameterDiscre teValue pv = new ParameterDiscre teValue();
pf.Name = rp.ParameterNam e;
// Get the value from the input
string v = ReportQueryCont rol1.GetValue(r p.ParameterName );
switch(rp.Value Type)
{
case CeReportVariabl eValueType.ceRV DateTime:
try
{
DateTime dt = DateTime.ParseE xact(v, "MM/dd/yyyy HH:mm:ss",
CultureInfo.Inv ariantCulture, DateTimeStyles. None);
pv.Value = dt; // string.Format(" DateTime({0:yyy y,MM,dd,HH,mm,s s})", dt);
pf.ParameterVal ueType = ParameterValueK ind.DateTimePar ameter;
}
catch(Exception ex)
{
Trace.Write("In valid date time format: " + v + " (" + ex.Message + ")");
pv.Value = v;
}
break;
case CeReportVariabl eValueType.ceRV Date:
try
{
DateTime dt = DateTime.ParseE xact(v, "MM/dd/yyyy",
CultureInfo.Inv ariantCulture, DateTimeStyles. None);
pv.Value = dt; // string.Format(" Date({0:yyyy,MM ,dd})", dt);
pf.ParameterVal ueType = ParameterValueK ind.DateParamet er;
}
catch(Exception ex)
{
Trace.Write("In valid date format: " + v + " (" + ex.Message + ")");
pv.Value = v;
pf.ParameterVal ueType = ParameterValueK ind.StringParam eter;
}
break;
default:
pv.Value = v;
pf.ParameterVal ueType = ParameterValueK ind.StringParam eter;
break;
}
if(pv.Value == null && !rp.EnableNullV alue)
{
// Ignore undefined values
continue;
}
Trace.Write("Sh owCrystalReport (): Report " + rpt.ID + ", [" +
rp.ValueType + "," + pf.ParameterVal ueType + "," + pf.ParameterVal ueKind + "]
" + pf.Name + "=" + pv.Value);
pf.CurrentValue s.AddValue(pv);
CrystalReportVi ewer1.Parameter FieldInfo.Add(p f);
}
}
CrystalReportVi ewer1.Enterpris eLogon = es;
CrystalReportVi ewer1.ReportSou rce = rs;
CrystalReportVi ewer1.Visible = true;
I am trying to show a Crystal Reports 10 Enterprise report in an ASP.NET
page (C#). I can run the report via the admin console just fine. When I try
to show the report, after setting up its parameters, I get:
"Value does not fall within the expected range."
How are people interacting with the Crystal Report viewer to set the
parameters on a report? I haven't found any useful documentation at
BusinessObjects .com or even with the crystal distribution. Following my
closing of this post is the code I use to setup the report for viewing.
Thanks
-- Jake
[ CODE ]
// Setup the crystal enterprise logon information
SessionMgr sm = new SessionMgr();
EnterpriseSessi on es = sm.Logon(uname, pwd, cms, auth);
//
// Discover the crystal ID of the report to view
//
EnterpriseServi ce service = es.GetService(" InfoStore");
InfoStore info = new InfoStore(servi ce);
string query = "Select * From CI_INFOOBJECTS Where SI_PROGID =
'CrystalEnterpr ise.Report' AND SI_ID=" + ReportID + " AND SI_INSTANCE = 0";
InfoObjects objs = info.Query(quer y);
//
// Setup the report and parameters.
//
if(objs.Count > 0)
{
// The InfoObjects collection is '1' based, not '0' based.
Report rpt = (Report)objs[1];
EnterpriseServi ce es2 = es.GetService(" PSReportFactory ");
PSReportFactory ps = (PSReportFactor y)es2.Interface ;
ReportSource rs = ps.OpenReportSo urce(rpt.ID);
if(Report.HasPa rameters)
{
CrystalReportVi ewer1.Parameter FieldInfo.Clear ();
ReportParameter s pms = rpt.ReportParam eters;
ParameterFields pfs = new ParameterFields ();
foreach(ReportP arameter rp in pms)
{
ParameterField pf = new ParameterField( );
ParameterDiscre teValue pv = new ParameterDiscre teValue();
pf.Name = rp.ParameterNam e;
// Get the value from the input
string v = ReportQueryCont rol1.GetValue(r p.ParameterName );
switch(rp.Value Type)
{
case CeReportVariabl eValueType.ceRV DateTime:
try
{
DateTime dt = DateTime.ParseE xact(v, "MM/dd/yyyy HH:mm:ss",
CultureInfo.Inv ariantCulture, DateTimeStyles. None);
pv.Value = dt; // string.Format(" DateTime({0:yyy y,MM,dd,HH,mm,s s})", dt);
pf.ParameterVal ueType = ParameterValueK ind.DateTimePar ameter;
}
catch(Exception ex)
{
Trace.Write("In valid date time format: " + v + " (" + ex.Message + ")");
pv.Value = v;
}
break;
case CeReportVariabl eValueType.ceRV Date:
try
{
DateTime dt = DateTime.ParseE xact(v, "MM/dd/yyyy",
CultureInfo.Inv ariantCulture, DateTimeStyles. None);
pv.Value = dt; // string.Format(" Date({0:yyyy,MM ,dd})", dt);
pf.ParameterVal ueType = ParameterValueK ind.DateParamet er;
}
catch(Exception ex)
{
Trace.Write("In valid date format: " + v + " (" + ex.Message + ")");
pv.Value = v;
pf.ParameterVal ueType = ParameterValueK ind.StringParam eter;
}
break;
default:
pv.Value = v;
pf.ParameterVal ueType = ParameterValueK ind.StringParam eter;
break;
}
if(pv.Value == null && !rp.EnableNullV alue)
{
// Ignore undefined values
continue;
}
Trace.Write("Sh owCrystalReport (): Report " + rpt.ID + ", [" +
rp.ValueType + "," + pf.ParameterVal ueType + "," + pf.ParameterVal ueKind + "]
" + pf.Name + "=" + pv.Value);
pf.CurrentValue s.AddValue(pv);
CrystalReportVi ewer1.Parameter FieldInfo.Add(p f);
}
}
CrystalReportVi ewer1.Enterpris eLogon = es;
CrystalReportVi ewer1.ReportSou rce = rs;
CrystalReportVi ewer1.Visible = true;
Comment