Изменение SSRS непосредственно в базе данных не отражается в ReportViewer

Я работаю над веб-редактором SSRS. Мне удалось разработать синтаксический анализатор, который обращается к схеме SSRS из таблицы CATALOG из базы данных и преобразует ее в HTML.

Отсюда пользователь может изменить отчет и отправить изменение, Parser снова получает HTML и преобразует его в результаты Desire.

Но когда я просматриваю этот отчет в ReportViewer, он все еще показывает старый отчет.

И когда я загружаю отчет с URL управления отчетом, он показывает изменения, которые я сделал из приложения.

Я сомневаюсь, что Microsoft также хранит RDL в физическом формате.

Пожалуйста помоги..


person naim shaikh    schedule 29.04.2015    source источник
comment
Какой столбец вы обновляете в Каталоге?   -  person Sébastien Sevrin    schedule 30.04.2015


Ответы (1)


Наконец я получил решение. Раньше я напрямую обновлял столбец Content в таблице Catalog, и хотя изменения обновлялись в БД, но это не отражалось на фактическом Live Report.

После некоторого поиска я нашел это. Как развернуть отчет через код и это сделано.

class Sample {
static void Main(string[] args)
{
    ReportingService2010 rs = new ReportingService2010();
    rs.Url = "http://<Server Name>" +
        "/_vti_bin/ReportServer/ReportService2010.asmx";
    rs.Credentials = 
        System.Net.CredentialCache.DefaultCredentials;

    Byte[] definition = null;
    Warning[] warnings = null;
    string name = "MyReport.rdl";

    try
    {
        FileStream stream = File.OpenRead("MyReport.rdl");
        definition = new Byte[stream.Length];
        stream.Read(definition, 0, (int)stream.Length);
        stream.Close();
    }
    catch (IOException e)
    {
        Console.WriteLine(e.Message);
    }

    try
    {
        string parent = "http://<Server Name>/Docs/Documents/";
        CatalogItem report = rs.CreateCatalogItem("Report", name, parent,
                    false, definition, null, out warnings);

        if (warnings != null)
        {
            foreach (Warning warning in warnings)
            {
                Console.WriteLine(warning.Message);
            }
        }

        else
            Console.WriteLine("Report: {0} created successfully " +
                              " with no warnings", name);
    }
    catch (SoapException e)
    {
        Console.WriteLine(e.Detail.InnerXml.ToString());
    }
} }
person naim shaikh    schedule 04.05.2015