【AR17】【连接时序数据库】
希望AR能从某些时序数据库拉取数据,比如TDengine或者自研数据库。数据源的下拉菜单里可以添加其他数据库吗?https://gcdn-cdn.grapecity.com.cn/data/attachment/forum/202409/30/162231hgq4grtiiooaiagn.png
TDengine有ADO.NET连接器和ODBC连接器。但是TDengine的ODBC连接器仅支持预定义的DSN(https://docs.taosdata.com/reference/connector/odbc/)。
AR可以通过ADO.NET连接器(https://github.com/taosdata/taos-connector-dotnet)连接到TDengine吗?
是这样,您这个有两种:
第一种就是ODBC,ODBC的话,需要AR发布的服务器上装对应的ODBC驱动,但是
TDengine的驱动这个确实之前没有了解过,您可以能得自己先试一下。使用方法就是服务器上驱动安装好后,练级字符串参考mysql的:
Driver={MySQL ODBC 8.0 Unicode Driver};Server=xa-irs-database;Port=3306;Database=test;User=root;Password=xA123456;Option=3;您把Driver写成您下载的驱动的驱动名称,连接字符串得参考那个驱动的提供厂家的连接字符串。不用和上面mysql一样。
如果可以连接上,数据集的查询语法就尝试直接原生的语法试一下。
2.其实还推荐您使用运行时数据源。可以参考这个:
https://help.grapecity.com.cn/pages/viewpage.action?pageId=5968575
相当于设计好字段,然后后端动态给值,这样我们就可以后端直接用 对应的连接dll,用代码查出来数据,再给报表赋值
Felix,你好。关于动态运行时数据源,如果我是在网页版上创建的报表。在哪儿可以添加代码针对LocateDataSource 事件加载数据呢? 有两种,一种是公用的,直接在usereporting里面设计并返回:
app.UseReporting(config => {
config.SetLocateDataSource((args) => {
DataTable dt = new DataTable();
return dt;
});
config.UseFileStore(ResourcesRootDirectory);
});另一种是我们写自定义的报表加载,报表的预览返回直接走UseCustomStore
相当于自定义报表返回,然后在报表加载的时候,去加载自定义数据源
app.UseReporting(config => {
config.UseCustomStore(getReport);
});
private object getReport(string reportName)
{
PageReport report = new PageReport();
report.Load(new FileInfo(""));
report1.Document.LocateDataSource += new GrapeCity.ActiveReports.LocateDataSourceEventHandler(Document_LocateDataSource);
.......
return report;
}
页:
[1]