Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/10/2005, 20:26
Diana
 
Fecha de Ingreso: febrero-2002
Mensajes: 9
Antigüedad: 22 años, 2 meses
Puntos: 0
Problema al cargar un rpt con parametros en ASP .NEt

Hola, tengo un visor de reportes en el cual cargo diferentes reportes segun seleccion, si selecciono algun reporte q no tiene parametros me lo muestra perfectamente, pero si el reporte tiene parametros y hace uso de store procedures me manda un fallo:

The report you requested requires further information. y me pide ingrese nuevamente los datos del logeo

o este otro fallo:
Query Engine Error: 'An internal error occurred. Please contact Crystal Decisions technical support.' Failed to open a rowset.

Mi codigo es el siguiente, espero alguien me pueda ayudar

private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
string sRuta="";
TableLogOnInfo crTableLogOnInfo = new TableLogOnInfo();
ConnectionInfo crConnectionInfo = new ConnectionInfo();
Database CRDatabase;
Tables crTables;
/*Toma listas de parametros*/

sRuta=this.Session["reporte"].ToString();
arParametros=(ArrayList) this.Session["arParametros"];
arValores=(ArrayList) this.Session["arValores"];
/*Asignacion de reporte*/
this.reportDocument1.Load(sRuta);
SetReportParameters(this.reportDocument1);
/*Asignacion de parametros*/
//System.Collections.IEnumerator myEnumerator = arParametros.GetEnumerator();
//System.Collections.IEnumerator myEnumerator2 = arValores.GetEnumerator();

// while ( myEnumerator.MoveNext() && myEnumerator2.MoveNext() )
// {
// this.reportDocument1.SetParameterValue(myEnumerato r.Current.ToString(),"'"+myEnumerator2.Current.ToS tring()+"'");
// }

//a cada tabla le indicas los parametros de conexion (logueo)
//para obtener permisos de acceso
// crConnectionInfo.ServerName = getRegistryKey("Server","172.16.0.117");//"172.16.0.117";
// crConnectionInfo.DatabaseName = getRegistryKey("db","Informador");//"Informador";
// crConnectionInfo.UserID = getRegistryKey("User","sa");//"sa";
// crConnectionInfo.Password = getRegistryKey("Pass","saei");//"saei";
// CRDatabase = reportDocument1.Database;
// crTables = CRDatabase.Tables;
// foreach (CrystalDecisions.CrystalReports.Engine.Table crTable in crTables)
// {
// crTableLogOnInfo = crTable.LogOnInfo;
// crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
// crTable.ApplyLogOnInfo(crTableLogOnInfo);
// }
// /*Asigna reporte al visor*/
// CrystalReportViewer1.ReportSource = reportDocument1;
//
// CrystalDecisions.Shared.TableLogOnInfo myLogin=CrystalReportViewer1.LogOnInfo[0];
// myLogin.ConnectionInfo.Password = getRegistryKey("Pass","saei");//"saei";
// myLogin.ConnectionInfo.UserID = getRegistryKey("User","sa");//"sa";
// myLogin.ConnectionInfo.DatabaseName=getRegistryKey ("db","Informador");//"Informador";
// myLogin.ConnectionInfo.ServerName=getRegistryKey(" Server","172.16.0.117");//"172.16.0.117";
//
// /*Remueve los parametros originales de logueo*/
// CrystalReportViewer1.LogOnInfo.RemoveAt(0);
//
// /*Asigna los nuevos parametros de logueo*/
// CrystalReportViewer1.LogOnInfo.Add(myLogin);
//crm
// crParameterFields = CrystalReportViewer1.ParameterFieldInfo;
// while ( myEnumerator.MoveNext() && myEnumerator2.MoveNext() )
// {
// crParameterField = crParameterFields[myEnumerator.Current.ToString()];
// crParameterValues = crParameterField.CurrentValues;
// crParameterDiscreteValue = new ParameterDiscreteValue();
// crParameterDiscreteValue.Value = myEnumerator2.Current.ToString();
// crParameterValues.Add(crParameterDiscreteValue);
// }
//
// CrystalReportViewer1.ParameterFieldInfo = crParameterFields;
//
//
//CrystalReportViewer1.RefreshReport();

// CrystalReportViewer1.DataBind();
// CrystalReportViewer1.BestFitPage=true;
//CrystalReportViewer1.so

crConnectionInfo.ServerName =getRegistryKey("Server","172.16.0.117");
crConnectionInfo.DatabaseName = getRegistryKey("db","Informador");
crConnectionInfo.UserID = getRegistryKey("User","sa");
crConnectionInfo.Password = getRegistryKey("Pass","saei");
crConnectionInfo.ServerName = getRegistryKey("Server","172.16.0.117");//"172.16.0.117";
CRDatabase = this.reportDocument1.Database;
crTables = CRDatabase.Tables;

foreach(CrystalDecisions.CrystalReports.Engine.Tab le crTable in crTables)
{
crTableLogOnInfo = crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);
}

this.CrystalReportViewer1.ReportSource = this.reportDocument1;

}

private CrystalDecisions.CrystalReports.Engine.ParameterFi eldDefinition SetReportParameters(CrystalDecisions.CrystalReport s.Engine.ReportDocument MyReport)
{
//sets the parameter values for main report and sub reports if any
CrystalDecisions.CrystalReports.Engine.ParameterFi eldDefinition ParameterFieldDefinition;
CrystalDecisions.Shared.ParameterDiscreteValue ParameterDiscreteValue;
CrystalDecisions.Shared.ParameterValues ParameterValues;
int paramcount;
paramcount = this.arValores.Count;
ParameterFieldDefinition = null;

for (int i = 0; i < paramcount; i++)//have to put paramcount otherwise hard code it .works
{
ParameterFieldDefinition = MyReport.DataDefinition.ParameterFields[i];
ParameterValues = new CrystalDecisions.Shared.ParameterValues();
ParameterDiscreteValue = new CrystalDecisions.Shared.ParameterDiscreteValue();
ParameterDiscreteValue.Value = this.arValores[i];
ParameterValues.Add(ParameterDiscreteValue);
ParameterFieldDefinition.CurrentValues.Clear();
ParameterFieldDefinition.DefaultValues.Clear();
ParameterFieldDefinition.ApplyCurrentValues(Parame terValues);

}
return ParameterFieldDefinition;
}

Aqui deje el codigo de varias formas q he intentado, de hecho tambien con un codigo que aqui pusieron.

Y nada que me funciona, error de compilacion no marca pero no me muestra los reportes, estoy usando .Net 2003, framework 1.1, asp 1, y sql server 2000

Saludos y de antemano millones de gracias!