mas problemas con Crystal Reports

03/07/2004 - 23:55 por tOny | Informe spam
hola a todos por aqui,
tengo un problema bien inquietante con Crystal Reports a
la hora de Exportar un reporte generado con
CrystalReportViewer me sale este error "Falta el valor
actual del campo de parámetro" justo en la sentencia
rEjecucionOperaciones.Export(); . Es un reporte que
recibe parámetros en su generación de la siguiente manera

//FechaInicio
ParameterField pfFechaInicio = paramFields["FechaInicio"];
ParameterValues pvFechaInicio =
pfFechaInicio.CurrentValues;
ParameterDiscreteValue pdvFechaInicio = new
ParameterDiscreteValue();
pdvFechaInicio.Value = FechaInicio;
pvFechaInicio.Add(pdvFechaInicio);

//FechaFin
ParameterField pfFechaFin = paramFields["FechaFin"];
ParameterValues pvFechaFin = pfFechaFin.CurrentValues;
ParameterDiscreteValue pdvFechaFin = new
ParameterDiscreteValue();
pdvFechaFin.Value = FechaFin;
pvFechaFin.Add(pdvFechaFin);

//asignando parametros al ReportViewer
crv.ParameterFieldInfo=paramFields;

sin olvidar la sentencia DataBind(); en el método OnInit

El código para exportar es el siguiente:

rEjecucionOperaciones = new
Reportes.reporte_POA_EjecucionOperaciones();

//Creando objeto de opciones de archivo de destino
DiskFileDestinationOptions objOpcionesDestino= new
DiskFileDestinationOptions();
objOpcionesDestino.DiskFileName = "c:\\temp\\archivo.pdf";

//asignando DestinationOptions para la exportacion
rEjecucionOperaciones.ExportOptions.DestinationOptions =
objOpcionesDestino;
rEjecucionOperaciones.ExportOptions.ExportDestinationType
= ExportDestinationType.DiskFile;
rEjecucionOperaciones.ExportOptions.ExportFormatType =
ExportFormatType.PortableDocFormat;
rEjecucionOperaciones.Export(); //AQUI ES DONDE SALE EL
ERROR

//Para poder exportarselo al cliente debes hacer lo
siguiente:
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/pdf";
Response.WriteFile("c:\\temp\\archivo.pdf");
Response.Flush();
Response.Close();


Donde puede estar el error???

gracias muchas por la ayuda
 

Leer las respuestas

#1 tOny
04/07/2004 - 18:34 | Informe spam
hola amigos(as)

ya encontre una solucion a mi problema, hay 3
consideraciones a tomar en cuenta:
1. el reporte debe ser guardado sin los datos (En Crystal
Reports, Menú 'File' desactivar la casilla de 'Save data
with Report'), aunque creo que esto es opcional.
2. Si es una BD que necesita autenticación utilizar la
cuenta respectiva de acceso a la misma, y
3. Asignar los valores a los parámetros del reporte

Y aqui va el código para quienes hayan tenido el mismo
problema, claro siempre esta sujeto a críticas y/o
sugerencias.

//Situación inicial: Tengo 3 Parametros:
CodigoUnidadFuncional, FechaInicio, FechaFin
//los cuales debo asignar sus valores al reporte antes de
exportarlo
//creo un objeto del reporte (en modo ReportDocument)
rEjecucionOperaciones = new
Reportes.reporte_POA_EjecucionOperaciones();

//CONECTAR A LA BD
TableLogOnInfo logOnInfo = new TableLogOnInfo ();
int i = 0;
// loguear en cada una de las tablas en el reporte
for (i=0; i<=rEjecucionOperaciones.Database.Tables.Count-
1; i++)
{
// Configurar la conexión en la tabla actual
logOnInfo.ConnectionInfo.ServerName = "(local)
\\Administrativo";
logOnInfo.ConnectionInfo.DatabaseName
= "IJBAgenda";
logOnInfo.ConnectionInfo.UserID
= "AgendaInstitucional";
logOnInfo.ConnectionInfo.Password
= "AgendaInstitucional";
rEjecucionOperaciones.Database.Tables
[i].ApplyLogOnInfo (logOnInfo);
}

//ahora vamos con los parámetros
Object paramValue;
//CodigoUnidadFuncional
paramValue = CodigoUnidadFuncional; //string
CodigoUnidadFuncional
rEjecucionOperaciones.SetParameterValue
("CodigoUnidadFuncional", paramValue);
//FechaInicio
paramValue = FechaInicio; //string FechaInicio
rEjecucionOperaciones.SetParameterValue("FechaInicio",
paramValue);
//FechaFin
paramValue = FechaFin; //string FechaFin
rEjecucionOperaciones.SetParameterValue("FechaFin",
paramValue);

//Creamos un objeto con las opciones del archivo destino
(PDF)
DiskFileDestinationOptions objOpcionesDestino= new
DiskFileDestinationOptions();
objOpcionesDestino.DiskFileName = "c:\\temp\\archivo.pdf";

//Sentencias de exportación a archivo.pdf
rEjecucionOperaciones.ExportOptions.DestinationOptions =
objOpcionesDestino;
rEjecucionOperaciones.ExportOptions.ExportDestinationType
= ExportDestinationType.DiskFile;
rEjecucionOperaciones.ExportOptions.ExportFormatType =
ExportFormatType.PortableDocFormat;
rEjecucionOperaciones.Export();

//Exportando al cliente
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/pdf";
Response.WriteFile("c:\\temp\\archivo.pdf");
Response.Flush();
Response.Close();




Saludos
tOny

Preguntas similares