gery 发表于 2024-9-30 16:25:28

【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吗?

Felix.Li 发表于 2024-9-30 16:25:29

是这样,您这个有两种:
第一种就是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,用代码查出来数据,再给报表赋值

gery 发表于 2024-9-30 17:14:43

Felix,你好。关于动态运行时数据源,如果我是在网页版上创建的报表。在哪儿可以添加代码针对LocateDataSource 事件加载数据呢?

Felix.Li 发表于 2024-9-30 17:41:31

有两种,一种是公用的,直接在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]
查看完整版本: 【AR17】【连接时序数据库】