如何从应用程序代码创建到JSON数据库的连接
大多数报表显示一些数据。通常,此数据是从数据库获得的。因此,报表具有到数据源的连接,以便具有可用表和字段以及数据本身的列表。但是,如果在编写报表时,您只有一个本地数据库,并且您在报表中创建了到该数据库的连接。这样,报表将无法正常工作。我们需要有效的连接。解决这种情况的方法有两种:使用用户程序中的数据源,或替换报表中的连接线。
第一种方法是众所周知的。您需要在应用程序中创建连接,然后登录到报表。然后,在设计报表时,可以选择此别名来源。一方面,这很方便,因为更改连接器不会影响报表。无论报表从何处获取数据,只要表和字段名称、数据类型和模板中提供的数据类型相同即可。这种方法的缺点是没有用户应用程序就无法设计报表。毕竟,连接只是在其中。报表开发人员可能没有任何用户连接到该应用程序。在这种情况下,内部连接到报表中的数据将是适当的。
因此,让我们看一下如何轻松地使用内部连接替换现有报表的连接。当然,该连接必须位于同一数据库以及报表中。只需为其设置另一个位置。
对于此应用程序,您需要添加对库的引用:FastReport.dll和FastReport.JsonDataConnection.dll。在目录FastReport.net中,有安装文件夹ExtrasConnectionsFastReport.Json。您需要组装项目。然后,您获得了必要的库。将它们添加到项目引用中。还有一个替代连接代码:
using FastReport; using FastReport.Utils; using FastReport.Data; private void Button1_Click(object sender, EventArgs e) { RegisteredObjects.AddConnection(typeof(JsonDataConnection)); Report report = new Report(); JsonDataConnection connection = new JsonDataConnection(); connection.ConnectionString = "Json=../../App_Data/nwind.json"; connection.CreateAllTables(); report.Dictionary.Connections.Add(connection); report.RegisterData(connection.DataSet); report.Load("../../App_Data/json.frx"); report.Prepare(); report.Show(); }
首先,我们将连接对象注册到Json数据库。接下来,创建一个报表对象的实例。创建JSON连接对象的副本。我们设置其ConnectionString属性——基本上只是指向文件的链接。在我们的例子中,文件位于项目的App_Data文件夹中。CreateAllTables函数从源中加载所有表。
接下来,我们需要将创建的连接添加到报表的连接集合中,并在报表中注册数据源。
现在,重要的是下载报表模板。如果在添加到报表连接的集合之前进行连接,则带有替换的技巧将不起作用。下载模板后,您需要准备一份报表到显示屏,然后显示它。
结果,我们建立了一个报表,该数据源最初是建立在另一条连接线上的。因此,我们可以替换任何记录中的连接字符串,而不必担心报表中指定路径上的数据库。