none
VB.NET REPORT VIEWER IN A MANAGED DESKTOP ENVR. --> 2 Q's RRS feed

  • Question

  • Hello,

    I am deploying a VB.NET application using clickonce.  Users in our domain do not have rights to install applications on thier pcs, however, I am using ClickOnce, which will allow the 'installation' of the 'manifest' necessary to run the application.

    For this app, I have several reports, which use the report viewer control on a Windows form.  Since our users to not have rights to install the report view controls, these files are pushed with Active Directory and group policy based on PC name.  The files we are deploying are located in the RSCLIENTPRINT.CAB file located online and come with the SQL Server 2005 install ( I believe).  The push of the files is working in that the reports instantiate and render the data just fine, but I cannot see the (Report Viewer) physical files on the pc.  They should be in the \SYSTEM32 folder, but are not.

    Why can I not see the files?  Are they installed in the GAC and not viewable?  Is this something I need to worry about?

    ALSO, it seems for each report I need a Windows form file (.VB) and a report file (.RDLC).  I know I will need a report file (.RDLC) for each report because the reports will be different, but can I use just one windows form (with the report viewer control) which (when loaded) could point to the necessary dataset and file?

    Thanks very much

    Cam

    Monday, October 20, 2008 3:41 PM

Answers

  • The ReportViewer DLLs come with Visual Studios, not SQL Server. They are installed in the GAC. Apllications using them should have the Report Viewer Redistributable as a prerequisite in their Setup, or otherwise ensure that the Micrsoft.ReportViewer.*.dll files get on the machine where the Application will run. RSClientPrint is an ActiveX control used to print reports. It is used by the VS WebForm ReportViewer, and by Reporting Services when you view a report from report manager or report viewer.

    You CAN reset the report and the datasets used in the report viewer.

    When using local reports, the code should look something like this:

    reportViewer1.Reset();  
    reportViewer1.ProcessingMode = Microsoft.Reporting.WinForms.ProcessingMode.Local;  
    reportViewer1.LocalReport.ReportEmbeddedResource = GetGetChosenReport();  
    foreach (KeyValuePair<string, DataTable> datasource in GetDataSourcesForChosenReport())  
    {  
        reportViewer1.LocalReport.DataSources.Add(datasource.Key, datasource.Value);  
    }  
    reportViewer1.RefreshReport(); 

    Also, if you have Sql Server Reporting Services, you can store your reports on a report server and point to the report on the server. This would result in better performance for large reports and you wouldn't need to worry about connecting data to the Report object since the queries and database connections are stored in the report definition.
    Nick Allen, Microsoft SQL Server Reporting Services. This posting is provided "AS IS" with no warranties and confers no rights.
    • Marked as answer by Cam888 Monday, March 9, 2009 11:06 PM
    Monday, October 20, 2008 6:28 PM