如何使用c#通过应用程序将自定义sql命令传递给fastreport.net?

时间:2013-04-16 13:42:22

标签: fastreport

我开始使用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行引发异常:“对象引用未设置为对象的实例。” 请某人帮帮我 tnx很多

1 个答案:

答案 0 :(得分: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查询已包含在IN REPORT中。因为没有其他方法在设计器中创建报表而不使用查询来获取数据,并且该查询保存在XML报表文件(frx)中。

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