2011-10-13 40 views
9

Tengo un problema con los servicios de informes, ejecutando archivos rdlc locales en la versión de 2005.El visor de informes no se carga, mostrando espacio en blanco - ejecutando archivos RDLC locales

que tengo en el HTML de un visor de informes configurado para ejecutarse localmente como sigue:

<rsweb:ReportViewer ID="ReportingServicesReportViewer" runat="server" Height="100%" 
      ProcessingMode="Local" ShowParameterPrompts="False" Width="100%"> 
     </rsweb:ReportViewer> 

En el código

// create SqlConnection 
     SqlConnection myConnection = new SqlConnection(ConnectionString); 
     myCommand.Connection = myConnection; 
     SqlDataAdapter da = new SqlDataAdapter(myCommand); 

     //get the data 
     DataSet data = new DataSet(); 
     da.Fill(data); 

     if (data != null && data.Tables.Count > 0 && data.Tables[0].Rows.Count > 0) 
     { 
      ReportingServicesReportViewer.Visible = true; 
      ltrStatus.Text = string.Empty; 

      //provide local report information to viewer 
      ReportingServicesReportViewer.LocalReport.ReportPath = Server.MapPath(Report.RDLCPath); 

      //bind the report attributes and data to the reportviewer 
      ReportDataSource rds = new ReportDataSource("DataSet1", data.Tables[0]); 
      ReportingServicesReportViewer.LocalReport.DataSources.Clear(); 
      ReportingServicesReportViewer.LocalReport.DataSources.Add(rds); 
      ReportingServicesReportViewer.LocalReport.Refresh(); 
     } 
     else 
     { 
      ReportingServicesReportViewer.Visible = false; 
      ltrStatus.Text = "No data to display."; 
     } 

Cuando el método para poblar el visor de informes con los resultados del informe se ejecuta, no aparece nada como si el visor del informe ni siquiera estuviera allí.

Lo que hice disparar problemas hasta ahora:

  • comprobado el visor de sucesos de errores y esto es lo único relacionado la que me hago, [dominio] \ sp_dbadmin Motivo: Error al abrir la base de datos explícitamente especificada. . Sin embargo, mi usuario que estoy conectando es un administrador del sistema. He comprobado que y estoy seguro, porque he comprobado los sys.server_role_members
  • he intentado hacerse pasar por el usuario conectado, en vano
  • He creado un usuario específico con derechos de administrador de sistemas, y se entregó a todos los derechos de acceso tanto desde IIS y también en el servidor sql 2008.

¿Alguien ha encontrado un problema similar a esto, alguna idea?

Respuesta

7

Intente utilizar un informe simple, a veces reportviewer arroja una excepción causada por RDLC no válido y muestra un informe vacío.

Intente también depurar el proyecto y mire la ventana de salida en Visual Studio: verá la advertencia que aparece en el motor RDL, podría ser útil investigar el motivo del error.

3

Tuve el mismo problema y en mi caso resultó que proporcioné un conjunto de datos que no era realmente el tipo de objeto que esperaba el informe.

En mi situación, el informe esperaba un objeto comercial, pero proporcioné una fuente SQL Data.

También encontré este mismo problema cuando había parámetros en el informe que no se permitían que fueran nulos o en blanco, pero los valores de los parámetros no se suministraron.

También tenga en cuenta que para establecer una fuente de datos en el código, debe hacerse en el evento onload y no en el evento page_load.

+4

En mi caso, también tuve un problema con el parámetro de informe que es nulo y luego carga un informe en blanco. Recuerde también cargar el informe solo si (! This.IsPostBack) de lo contrario entra en un bucle de carga permanente. – Ghlouw

8

Tuve el mismo problema con VS2012, el informe muestra la carga de la imagen y luego de completar la carga, el informe está en blanco. Los datos existen pero no se representan.

Solución: Simplemente cambie el Informe AsyncRendering a False y el informe vuelve a funcionar bien.

5

Estaba obteniendo el mismo problema cuando agrego el parámetro en rdlc pero no lo asigno. Lo resolví agregando este código.

Dim p_Date As Microsoft.Reporting.WebForms.ReportParameter 
p_Date = New Microsoft.Reporting.WebForms.ReportParameter("DATE", txtDate.Text) 
    Me.ReportViewer1.LocalReport.SetParameters(New Microsoft.Reporting.WebForms.ReportParameter() {p_Date}) 
    ReportViewer1.LocalReport.Refresh() 
+0

¡No es el mejor ejemplo de código, pero identificó el problema exactamente! – Adam

1

En mi caso el culpable estaba teniendo parámetros con el valor nulo Permitir = false (sin marcar) ... No me preguntó por qué.

+0

¿cómo solucionó esto? ¿Cómo lo configuraste para permitir valores nulos? – CowboyBebop

0

Tenía el mismo problema. Me tomó un tiempo descubrirlo, pero resultó que accidentalmente inventé el control ReportViewer mismo, así que perdí lo que el Diseñador de Visual Studio había creado para mí cuando diseñé el formulario y es por eso que el control de reporteros siguió apareciendo en blanco: Nunca establezco ninguna propiedad en el objeto ReportViewer de Visual Studio Designer.

error tonto, pero tomó bastante tiempo para averiguarlo.

2

Ésta tomó un poco de tiempo para averiguar, por lo que es de esperar que estos controles se ahorrará un tiempo:

1) Verificar el web.config

<system.web> 
    <httpHandlers> 
    <add path="Reserved.ReportViewerWebControl.axd" verb="*" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" validate="false" /> 
    </httpHandlers> 

    <buildProviders> 
    <add extension=".rdlc" type="Microsoft.Reporting.RdlBuildProvider, Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
</buildProviders> 
</system.web> 

<system.webServer> 
    <handlers> 
    <add name="ReportViewerWebControlHandler" preCondition="integratedMode" verb="*" path="Reserved.ReportViewerWebControl.axd" type="Microsoft.Reporting.WebForms.HttpHandler, Microsoft.ReportViewer.WebForms, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" /> 
    </handlers> 
<system.webServer> 

2) probar el control de visor de informes directamente en vista de diseño antes de pasar cualquier configuración en código

Hard-Coded Report Viewer Control

3) Verificar que el gestor de la escritura está en la página antes de que el informe espectador

4) Asegúrese de que el informe se ejecuta fuera del visor de diseño, ya sea localmente o en el servidor de SSRS

5) ASEGÚRESE de que el informe tiene valores por omisión para todos los parámetros! Los informes que requieren parámetros y no tienen valores predeterminados aparecen en blanco.

3

En mi caso, el control ReportViewer no proporciona mensajes de error (EventViewer ni cuerpo de control ReportViewer), solo página en blanco. Creo que esto dificulta encontrar y solucionar el problema. ¡La respuesta de Yoel Halb fue mi clave!

Una propiedad llamada IsReadyForRendering was False. In the BOL se refiere al tema de parámetros.

pude inspeccionar cada valor de la totalidad de los parámetros con el código (se puede ejecutar desde la ventana inmediata)

var parameters = ReportViewer1.LocalReport.GetParameters() 

Encontrará el parámetro problemático cuando se mira al Estado la propiedad con el valor "MissingValidValue"

Espero que esto ayude!

Cuestiones relacionadas