کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش اتصال Data در Stimul Soft

آموزش اتصال Data در Stimul Soft

می توان به روش های مختلفی برای گزارش Data فراهم کرد. ساده ترین راه ذخیره ی connection settings در قالب گزارش است. همچنین می توانید از طریق کد به Data دسترسی پیدا کنید. این کار پس از laod گزارش در GetReport action امکان پذیر است:


HomeController.cs
...
public IActionResult GetReport()
{
DataSet ds = new DataSet();
ds.ReadXml(StiNetCoreHelper.MapPath(this, "Data/Demo.xml"));
 
StiReport report = new StiReport();
report.Load(StiNetCoreHelper.MapPath(this, "Reports/TwoSimpleLists.mrt"));
report.Dictionary.Databases.Clear();
report.RegData("Demo", ds);
 
return StiNetCoreViewer.GetReportResult(this, report);
}
...

می توانید در viewer در interactive action ها (هنگام اعمال پارامترهای گزارش، مرتب سازی، و..) به Data دسترسی پیدا کنید. برای این کار، باید Interaction action را در HTML5 Viewer component مقداردهی کنید، و در action handler، به Dataی گزارش جاری دسترسی پیدا کنید. به همین شیوه می توانید به Data در دیگر action های viewer دسترسی پیدا کنید.


Index.cshtml
...
@Html.StiNetCoreViewer(new StiNetCoreViewerOptions() {
Actions =
{
GetReport = "GetReport",
ViewerEvent = "ViewerEvent",
Interaction = "ViewerInteraction"
}
})
...


HomeController.cs
...
public IActionResult ViewerInteraction()
{
DataSet data = new DataSet();
data.ReadXml(StiNetCoreHelper.MapPath(this, "Data/Demo.xml"));
 
StiReport report = StiNetCoreViewer.GetReportObject(this);
report.RegData("Demo", data);
 
return StiNetCoreViewer.InteractionResult(this, report);
}
...

اگر می خواهید فقط برای interactive action های خاصی از viewer به Dataی جدید دسترسی پیدا کنید، برای مثال فقط وقتی پارامترهای گزارش را اعمال می کنید، می توانید از پارامترهای viewer استفاده کنید. پارامترهای viewer به صورت یک شی از کلاس StiRequestParams ارائه می شوند و به ازای هر request به سرور ارسال می شوند و همه ی اطلاعات لازم و وضعیت سمت کلاینت viewer را در خود دارند. برای تعیین نوع action از viewer، کافی است Action property در پارامترهای viewer را بررسی کنیم.


HomeController.cs
...
public IActionResult ViewerInteraction()
{
StiRequestParams requestParams = StiNetCoreViewer.GetRequestParams(this);
if (requestParams.Action == StiAction.Variables)
{
DataSet data = new DataSet();
data.ReadXml(StiNetCoreHelper.MapPath(this, "Data/Demo.xml"));
 
StiReport report = StiNetCoreViewer.GetReportObject(this);
report.RegData("Demo", data);
 
return StiNetCoreViewer.InteractionResult(this, report);
}
 
return StiNetCoreViewer.InteractionResult(this);
}
...

SQL data sources

پارامترهای اتصال به SQL data source یا هر data source دیگری، می تواند در report template ذخیره شود. اگر می خوهید پارامترهای اتصال را قبل از render شدن گزارش، و در کد ذخیره کنید، می توانید از کد زیر استفاده کنید:


HomeController.cs
...
public IActionResult 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(StiNetCoreHelper.MapPath(this, "Reports/SqlSampleReport.mrt"));
report.RegData("Products", dataSet);
 
return StiNetCoreViewer.GetReportResult(this, report);
}
...

برای SQL data source های دیگر، connection به صورت مشابهی ساخته می شود. و یک adapter متناسب با نوع data source استفاده می شود. برای MS SQL data source، باید از SqlDataAdapter استفاده کنید. برای Oracle باید از OracleDataAdapter استفاده کنید. همچنین connection string مشخص شده باید با نوع connection هم خوانی داشته باشد.

جدول زیر connection string template ها را برای انواع مختلف data source ها نشان می دهد:

Data Source
Connection String Template
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://:@localhost/test
OData
http://services.odata.org/v3/odata/OData.svc/

برای مواردی که در جدول بالا موجود ندارند می توانید به این لینک مراجعه کنید.

Data از فایل های XML, JSON, Excel

اطلاعات لازم برای اتصال به JSON data source و XML data source را می توان در report template ذخیره کرد. اگر می خواهید data file ها را از طریق کد مشخص کنید، می توانید از مثال زیر استفاده کنید.


HomeController.cs
...
public IActionResult GetReport()
{
DataSet data = new DataSet();
data.ReadXml(StiNetCoreHelper.MapPath(this, "Data/Demo.xml"));
 
StiReport report = new StiReport();
report.Load(StiNetCoreHelper.MapPath(this, "Reports/SimpleList.mrt"));
report.RegData(data);
 
return StiNetCoreViewer.GetReportResult(this, report);
}
...


HomeController.cs
...
public IActionResult GetReport()
{
DataSet data = StiJsonToDataSetConverter.GetDataSetFromFile(StiNetCoreHelper.MapPath(this, "Data/Demo.json"));
 
StiReport report = new StiReport();
report.Load(StiNetCoreHelper.MapPath(this, "Reports/SimpleList.mrt"));
report.RegData(data);
 
return StiNetCoreViewer.GetReportResult(this, report);
}
...

viewer می تواند Data را از یک فایل Excel بگیرد. برای این منظور می توانید از کد زیر استفاده کنید:


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

1398/07/08 4857 0
نظرات شما

نظرات خود را ثبت کنید...