Информация

 

В следствие того, что для панелей индикаторов (дашбордов) и отчетов используется одинаковый унифицированный формат шаблона MRT, методы для загрузки шаблона и работы с данными, то в тексте документации будет использоваться слово «отчет».

 

 

 

Данные для построения отчета могут быть подключены различными способами. Самый простой – хранить настройки подключения в самом шаблоне отчета. Так же данные можно подключить из кода, это можно сделать при загрузке отчета в действии GetReport.

 

HomeController.cs

...

public ActionResult GetReport()

{

DataSet ds = new DataSet();

ds.ReadXml(Server.MapPath("~/Content/Data/Demo.xml"));

 

StiReport report = new StiReport();

report.Load(Server.MapPath("~/Content/TwoSimpleLists.mrt"));

report.Dictionary.Databases.Clear();

report.RegData("Demo", ds);

 

return StiMvcViewer.GetReportResult(report);

}

...

 

 

Данные для отчета можно подключать не только при его загрузке. Например, можно подключить новые данные в момент интерактивных действий во вьювере (применение параметров отчета, сортировка, детализация, сворачивание). Для этого необходимо задать действие Interaction для компонента HTML5 Viewer, а в обработчике действия подключить данные для текущего отчета. Таким же способом можно подключить данные в других действиях вьювера.

 

Index.cshtml

...

@Html.Stimulsoft().StiMvcViewer("MvcViewer1",

new StiMvcViewerOptions() {

Actions =

{

GetReport = "GetReport",

ViewerEvent = "ViewerEvent",

Interaction = "ViewerInteraction"

}

})

...

 

HomeController.cs

...

public ActionResult ViewerInteraction()

{

DataSet data = new DataSet();

data.ReadXml(Server.MapPath("~/Content/Data/Demo.xml"));

 

StiReport report = StiMvcViewer.GetReportObject();

report.RegData("Demo", data);

 

return StiMvcViewer.InteractionResult(report);

}

...

 

 

При необходимости подключить новые данные только для определенного интерактивного действия вьювера, например, только при применении параметров отчета, можно воспользоваться параметрами вьювера. Параметры вьювера представлены в виде объекта класса StiRequestParams, они передаются при любом запросе на сторону сервера, и содержат все необходимые сведения и состояния клиентской части вьювера. Для определения типа действия вьювера достаточно проверить свойство Action у параметров вьювера.

 

HomeController.cs

...

public ActionResult ViewerInteraction()

{

StiRequestParams requestParams = StiMvcViewer.GetRequestParams();

if (requestParams.Action == StiAction.Variables)

{

DataSet data = new DataSet();

data.ReadXml(Server.MapPath("~/Content/Data/Demo.xml"));

 

StiReport report = StiMvcViewer.GetReportObject();

report.RegData("Demo", data);

 

return StiMvcViewer.InteractionResult(report);

}

 

return StiMvcViewer.InteractionResult();

}

...

 

 

SQL источники данных

 

Параметры подключения к SQL источнику данных, как и к любому другому, можно хранить в самом шаблоне отчета. Если требуется задать параметры подключения из кода перед построением отчета (например, по причине безопасности или в зависимости от авторизованного пользователя), можно воспользоваться приведенным ниже примером.

 

HomeController.cs

...

public ActionResult GetReport()

{

OracleConnection connection = new OracleConnection("Data Source=Oracle8i;Integrated Security=yes");

connection.Open();

OracleDataAdapter adapter = new OracleDataAdapter();

adapter.SelectCommand = new OracleCommand("SELECT * FROM Products", connection);

 

DataSet dataSet = new DataSet("productsDataSet");

adapter.Fill(dataSet, "Products");

 

StiReport report = new StiReport();

report.Load(Server.MapPath("~/Content/SqlSampleReport.mrt"));

report.RegData("Products", dataSet);

 

return StiMvcViewer.GetReportResult(report);

}

...

 

 

Также, для SQL источников данных используемых в отчете, можно указать Время ожидания запроса (Query Timeout) в секундах. Значение данного свойства сохраняется в самом шаблоне отчёта для каждого SQL подключения отдельно.

 

Ниже приведен пример кода, который предоставляет возможность изменить строку соединения для MS SQL, скорректировать запрос, установить время ожидания запроса для уже созданного соединения и источников данных в отчете.

 

HomeController.cs

...

public ActionResult GetReport()

{

 

StiReport report = new StiReport();

report.Load(Server.MapPath("Report.mrt"));

((StiSqlDatabase)report.Dictionary.Databases["Connection"]).ConnectionString = @"Data Source=server;Integrated Security=True;Initial Catalog=DataBase";

((StiSqlSource)report.Dictionary.DataSources["DataSourceName"]).SqlCommand = "select * from Table where Column = 100";

((StiSqlSource)report.Dictionary.DataSources["DataSourceName"]).CommandTimeout = 1000;

 

return StiMvcViewer.GetReportResult(report);

}

...

 

Информация

 

Для SQL источников данных других типов подключение создается аналогично, при этом подключается адаптер, соответствующий типу источника данных. Например, для MS SQL источника необходимо подключать SqlDataAdapter, для OLE DB необходим OleDbDataAdapter. Также, при этом следует указать строку соединения, соответствующую типу подключения.

 

 

 

Вы также можете использовать данные для разработки отчетов и дашбордов полученные из OData хранилищ данных. В этом случае, авторизация может быть выполнена с использованием имени, пароля пользователя или с использованием токена. Параметры авторизации указываются в строке соединения к OData хранилищу с использованием разделителя ";".

 

HomeController.cs

...

public ActionResult GetReport()

{

 

var report = new StiReport();

 

//Authorization using a user account                

var oDataDatabase = new StiODataDatabase("OData", "OData", @"https://services.odata.org/V4/Northwind/Northwind.svc;AddressBearer=adress;UserName=UserName;Password=Password;Client_Id=Your Client ID", false, null);

 

//Authorization using a user token                

var oDataDatabase = new StiODataDatabase("OData", "OData", @"https://services.odata.org/V4/Northwind/Northwind.svc;Token=Enter your token", false, null);

 

report.Dictionary.Databases.Add(oDataDatabase);

oDataDatabase.Synchronize(report);

 

//Query with data filter

((StiSqlSource)report.Dictionary.DataSources["Products"]).SqlCommand = "Products?$filter=ProductID eq 2";

 

return StiMvcViewer.GetReportResult(report);

}

...

 

 

В таблице ниже представлены шаблоны строк подключения для различных типов источников данных.

 

Источник данных

Шаблон строки соединения

MS SQL

Integrated Security=False; Data Source=myServerAddress;Initial Catalog=myDataBase; User ID=myUsername; Password=myPassword;

MySQL

Server=myServerAddress; Database=myDataBase;UserId=myUsername; Pwd=myPassword;

ODBC

Driver={SQL Server}; Server=myServerAddress;Database=myDataBase; Uid=myUsername; Pwd=myPassword;

OLE DB

Provider=SQLOLEDB.1; Integrated Security=SSPI;Persist Security Info=False; Initial Catalog=myDataBase;Data Source=myServerAddress

Oracle

Data Source=TORCL;User Id=myUsername;Password=myPassword;

MS Access

Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Password=pass;Data Source=C:\\myAccessFile.accdb;

PostgreSQL

Server=myServerAddress; Port=5432; Database=myDataBase;User Id=myUsername; Password=myPassword;

Firebird

User=SYSDBA; Password=masterkey; Database=SampleDatabase.fdb;DataSource=myServerAddress; Port=3050; Dialect=3; Charset=NONE;Role=; Connection lifetime=15; Pooling=true; MinPoolSize=0;MaxPoolSize=50; Packet Size=8192; ServerType=0;

SQL CE

Data Source=c:\MyData.sdf; Persist Security Info=False;

SQLite

Data Source=c:\mydb.db; Version=3;

DB2

Server=myAddress:myPortNumber;Database=myDataBase;UID=myUsername;PWD=myPassword;Max Pool Size=100;Min Pool Size=10;

Infomix

Database=myDataBase;Host=192.168.10.10;Server=db_engine_tcp;Service=1492;Protocol=onsoctcp;UID=myUsername;Password=myPassword;

Sybase

Data Source=myASEserver;Port=5000;Database=myDataBase;Uid=myUsername;Pwd=myPassword;

Teradata

Data Source=myServerAddress;User ID=myUsername;Password=myPassword;

VistaDB

Data Source=D:\folder\myVistaDatabaseFile.vdb4;Open Mode=ExclusiveReadWrite;

Universal(dotConnect)

Provider=Oracle;direct=true;data source=192.168.0.1;port=1521;sid=sid;user=user;password=pass

MongoDB

mongodb://<user>:<password>@localhost/test

OData

http://services.odata.org/v3/odata/OData.svc/

Другие...

В таблице представлены наиболее часто используемые шаблоны для строки соединения. Посмотреть различные варианты строк соединения вы можете на специализированном сайте.

 

 

Данные из XML, JSON, Excel файлов

 

Подключение к XML и JSON источникам данных можно хранить в шаблоне отчета. Если требуется указать файлы данных из кода, можно воспользоваться приведенным ниже примером.

 

HomeController.cs

...

public ActionResult GetReport()

{

DataSet data = new DataSet();

data.ReadXml(Server.MapPath("~/Content/Data/Demo.xml"));

 

StiReport report = new StiReport();

report.Load(Server.MapPath("~/Content/SimpleList.mrt"));

report.RegData(data);

 

return StiMvcViewer.GetReportResult(report);

}

...

 

HomeController.cs

...

public ActionResult GetReport()

{

DataSet data = StiJsonToDataSetConverterV2.GetDataSetFromFile(Server.MapPath("~/Content/Data/Demo.json"));

 

StiReport report = new StiReport();

report.Load(Server.MapPath("~/Content/SimpleList.mrt"));

report.RegData(data);

 

return StiMvcViewer.GetReportResult(report);

}

...

 

Информация

 

Во вьювере присутствует возможность получения данных из Excel файла. Для этого можно воспользоваться указанным ниже методом.

 

DataSet dataSet = StiExcelConnector.Get().GetDataSet(new StiExcelOptions(array, this.FirstRowIsHeader));