Telerik Forums
Reporting Forum
2 answers
577 views

I have been reading https://www.telerik.com/support/kb/reporting/details/how-to-edit-connection-strings-saved-by-the-standalone-report-designer- 

to view the connection strings that I have created, but for some reason I do not see a Telerik_EAD. The Telerik_AD is for an older version of Reports and does not have the named connection strings.

 

Where is the shared connection string stored by Report Designer?  I'm at version 14.1.20.513?

 

Thanks.

SL
Top achievements
Rank 1
Veteran
 answered on 30 Jun 2020
1 answer
104 views

    So, I have an app which prints a photo of a map which I keep in a cookie and I have to insert it in a telerik report. I also have a few dozen fields which are not inserted in a database. Do I have to get the values for the fields from a database source or is there any other way I can send the values? 

The data is basically stored in my view, so can I somehow take the data from my fields and sent it to the report? 
Same goes for the map? How do I insert the map in the report? I went through the Map Wizard in the Report Designer, but the data sources are the same. 

Katia
Telerik team
 answered on 30 Jun 2020
10 answers
1.5K+ views

Hello,

It took me a long time to get this figure out so I thought I would share it.  I found a lot of PARTIAL examples in the forums and I had to piece this together from them. So I wanted to post something that shows the entire solution to the problem of changing connections for reports.

GOAL: I needed a simple way to manage database connections for .trdp files in a Reporting Rest Service.

SET UP:
1. I have a local development reporting Rest Service running in my local IIS
2. I have a reporting rest service as its own site in an Azure Virtual Machine IIS
3. I have defined 2 connection strings in my local rest service web.config for my local and remote database
4. This service is used by an Angular (version 7 as of post) App with an HTML 5 report viewer

REQUIREMENTS:
1. have a way to use the local connection string when testing locally
2. have a way to use the remote connection string when I "publish/deploy" my rest service tot he remote VM IIS
3. This project will ONLY use .trdp files so I wanted to keep it as simple as possible
4. I had to enable CORS to get this all to work

HOW IT WORKS:
1. Connections defined in web.config
2. a: use C# preprocessors to change the connection:  see here https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/preprocessor-directives/
    b: used custom build types (Publish_Release & Publish_Debug in addition to the default Debug and Release) for the logic of what connection string to use.
    c: Note that if you want to use build types like me you will need to add them to the Project Properties => Build => Conditional Symbols
3. build custom report resolver to unpackage and assign the connection
4. Use custom resolver in default ReportsController of rest service
5. Note that I moved the definition for the location of the reports folder to the custom resolver
6. I built in a report parameter ("connection") that you will have to add to your report that displays the database server in the report (with username and password removed).  This is just for debugging and can be removed in your context.

 

NOTE: I will show all code including the using statements to make it easier to understand everything going on

1: the web.config connections:

    <add name="conn_dev" connectionString="YourLocalConnection" providerName="System.Data.SqlClient" />
    <add name="conn_live" connectionString="YourRemoteConnection" providerName="System.Data.SqlClient"  />

2 - 3: Custom Resolver

using System;
using System.Configuration;
using System.IO;
using System.Web;
using Telerik.Reporting;
using Telerik.Reporting.Services.Engine;

namespace Regent.Reporting.Resolvers
{
  public class MyResolver : IReportResolver
  {
    private static string _serverPath;
    private static string _conn;

    public MyResolver()
    {
      /* GET server Path */
      _serverPath = HttpContext.Current.Server.MapPath("~/");

      /* GET CONNECTION STRINGS */
      /* Conditionally set connection string based on build mode */
#if (Publish_Release || Publish_Debug)
      _conn = ConfigurationManager.ConnectionStrings["conn_live"].ConnectionString;
#endif
#if (!Publish_Release && !Publish_Debug)
      _conn = ConfigurationManager.ConnectionStrings["conn_dev"].ConnectionString;
#endif

    }

    public ReportSource Resolve(string reportId)
    {
      try
      {
        /* get path to report */
        var reportsPath = Path.Combine(_serverPath, "Reports"); // path to folder where the .trdp reports are kept
        var sourceReportSource = new UriReportSource { Uri = reportsPath + "\\" + reportId };

        //retrieve an instance of the report     
        var reportPackager = new ReportPackager();
        using (var sourceStream = File.OpenRead(sourceReportSource.Uri))
        {
          var report = (Report)reportPackager.UnpackageDocument(sourceStream);
          /* gets server name of connection string without user/password
           and assigns this value to report parameter for display in report */
          report.ReportParameters["connection"].Value = _conn.Split(new [] {';'},2)[0];
          var reportInstance = new InstanceReportSource
          {
            ReportDocument = report
          };
          // assign the connection
          ((SqlDataSource)report.DataSource).ConnectionString = _conn;
          
          return new InstanceReportSource { ReportDocument = reportInstance.ReportDocument };
        }

      }
      catch (Exception e)
      {
        Console.WriteLine(e);
        return null;
      }

    }
  }
}

 

4. Use the custom resolver in the ReportsController

using Regent.Reporting.Resolvers;
using System.Web.Http.Cors;
using Telerik.Reporting.Cache.File;
using Telerik.Reporting.Services;
using Telerik.Reporting.Services.WebApi;

namespace Regent.Reporting.Controllers
{

  //The class name determines the service URL. 
  //ReportsController class name defines /api/report/ service URL.
  [EnableCors(origins: "*"              , headers: "*"              , methods: "*")]
  public class ReportsController : ReportsControllerBase
  {
    private static readonly ReportServiceConfiguration configurationInstance;

    static ReportsController()
    {
      //Setup the ReportServiceConfiguration
      configurationInstance = new ReportServiceConfiguration
      {
        HostAppId = "Regent.Reporting",
        Storage = new FileStorage(),
        ReportResolver = new MyResolver()
      };
    }

    public ReportsController()
    {
      //Initialize the service
.ReportServiceConfiguration = configurationInstance;
    }
  }
}

 

 

In conclusion, I hope this helps someone else.  This was as simple as I could make it change the connection string based on build types for only .trdp reports.  Unfortunately, this forum does not allow posting formatted code so you will have to pull it into your own editor to see it clearly.

Cheers

Eric R | Senior Technical Support Engineer
Telerik team
 answered on 29 Jun 2020
3 answers
621 views
Hi,

I develop my reports with a standard sql connection.
Contrariwise, when I consume the reports in my application I set datasource programmatically (report.DataSource=<DataTable>).
All work good if the report is a simple report.
If it contains a CrossTab the ReportViewer fails and show a message as "An error has occurred while processing Table 'crosstab1': Unable to establesh a connection to the database..."

Thanks,
marc.
Aseman
Top achievements
Rank 1
Veteran
 answered on 29 Jun 2020
1 answer
101 views

Hi,

I have one list and one table in telerik reporting. Data source assigned for list. For each record in list, i need to generate the table. The table is located below the list. After the table i need page break. I tested with group header section. But it not working the page break. Please suggest.

Peter
Telerik team
 answered on 29 Jun 2020
1 answer
275 views
When using an ObjectDataSource in the standalone report designer I am unable to preview the report. When I click the preview button I get an error that reads:

"An error occurred while invoking data retrieval method.
Exception has been thrown by the target of an invocation.
Could not load file or assembly 'System.Data.SqlClient, Version=4.6.1.1, Culture=neutral, PublicKeyToken=' or one of its dependencies. The system cannot find the file specified.."
Eric R | Senior Technical Support Engineer
Telerik team
 answered on 29 Jun 2020
10 answers
504 views

I've just downloaded Telerik's reporting products and during the installation I've hit a problem with Report Server.  I'm running Windows 8, with IIS 10 express I believe and .Net 4.6

 

At first the installer runs along fine, installing Telerik Reporting, but when it comes to Report Server it sort of stalls for about 10 minutes.  I've attached a couple of screenshots of what it looks like both before and after the error; unfortunately the forum software doesn't allow me to attach the error log itself (only images), so let me know if I can send it to you some other way.  Thanks for your help!

 

 

 

Ivan Hristov
Telerik team
 answered on 29 Jun 2020
1 answer
97 views

I'm getting an error when passing a parameter to a report programmatically.

Data source is embedded in report definition. I was using a default parameter value, also embedded in the definition. Now I'm trying to change it with the following code, but getting an error:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load

        Dim p1 As New Telerik.Reporting.Parameter With {.Name = "AGClientID", .Value = "1111"}

        ReportViewer1.ReportSource.Parameters.Add(p1)

    End Sub

 

Error is: Value of type 'Parameter' cannot be converted to 'Parameter'

 

 

Caleb
Top achievements
Rank 1
 answered on 26 Jun 2020
0 answers
197 views

Hello,

 

Is it possible to design a card view in telerik reporting like the one attached?

Chandini
Top achievements
Rank 1
 asked on 25 Jun 2020
2 answers
229 views
Just upgraded Reporting from 12.2.18.1129 > 14.1.20.618 and now in reporting, the report runs and upon rendering shows no data only 1 blank row. After pressing the Report Refresh button all data displays properly.
Neli
Telerik team
 answered on 25 Jun 2020
Top users last month
Will
Top achievements
Rank 2
Iron
Motti
Top achievements
Rank 1
Iron
Hester
Top achievements
Rank 1
Iron
Bob
Top achievements
Rank 3
Iron
Iron
Veteran
Thomas
Top achievements
Rank 2
Iron
Want to show your ninja superpower to fellow developers?
Want to show your ninja superpower to fellow developers?