4

我开始使用 fastreport.net 在 c# 中生成报告,因为 Crystal 报告与 .net4 不兼容。它是如此简单,但它也如此复杂。我尝试通过我的应用程序将 sql 命令传递给我的报告,但它不起作用。任何人都可以帮助我吗?这是代码:

        Report rpt = new Report();
        rpt.Load("H:\\MyReport.frx");
        rpt.SetParameterValue("Parameter", "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=Confictionary");
        FastReport.Data.TableDataSource data = rpt.GetDataSource("Contact") as FastReport.Data.TableDataSource;
        data.SelectCommand = "SELECT * from contact";
        rpt.Prepare();
        rpt.ShowPrepared();

它在第 5 行抛出异常:“对象引用未设置为对象的实例。” 请某人帮助我。
很多

4

1 回答 1

2

我认为 SQL 命令应该在报告模板集中,而不是动态的,除非这只是第一次用于创建报告文件。

我用这个:

           FReport.SetParameterValue("SQL_rysys", ConnectionString);

                  if (FReport.Dictionary.Connections.Count > 0)
                  {
                      FReport.Dictionary.Connections[0].ConnectionString = ConnectionString;
                      FReport.Dictionary.Connections[0].ConnectionStringExpression = "[SQL_rysys]";
                      FReport.Dictionary.Connections[0].CommandTimeout = 60;
                  }

此代码为参数“SQL_rysys”(英文为 SQL_connection)分配值,我传递 SQL 连接字符串。此外,如果数据源字典中有任何连接 - 我将连接字符串分配给第一个。

所以我的报告总是得到正确的连接字符串,但是 SQL 查询已经包含在报告中。因为没有其他方法可以在设计器中创建报表而不使用查询来获取数据,并且该查询保存在 XML 报表文件 (frx) 中。

我在 fastreport 支持中询问如何分配查询,但他们的支持是 AWFUL 并且 noobs 在那里工作。

于 2013-06-08T21:44:25.343 回答