【问题标题】:Existing Crystal Report in WPFWPF 中现有的水晶报表
【发布时间】:2014-04-10 09:13:52
【问题描述】:

我试图在我们的 WPF 应用程序中包含一个预先创建的 CrystalReport,它通过系统 DataSource(由我们的设计器创建)链接到 mysql 数据库。但是我遇到了一个障碍,每当在我们的应用程序中加载报告时,它都会要求登录数据库,并且即使使用有效信息也无法登录。

我有以下代码:

            string path = System.IO.Path.Combine(Environment.CurrentDirectory, @"FrontPageReport.rpt");
            ReportDocument cryRpt = new ReportDocument();
            cryRpt.Load(path);
            ParameterFieldDefinitions crParameterFieldDefinitions;
            ParameterFieldDefinition crParameterFieldDefinition;
            ParameterValues crParameterValues = new ParameterValues();
            ParameterDiscreteValue crParameterDiscreteValue = new ParameterDiscreteValue();
            //System.Net.NetworkCredential networkCredentials = new System.Net.NetworkCredential("ShippingClient", "1234", "domain");
            cryRpt.SetDatabaseLogon("ShippingClient", "1234");

            crParameterDiscreteValue.Value = shipmentID;
            crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields;
            crParameterFieldDefinition = crParameterFieldDefinitions["shipment_id"];
            crParameterValues = crParameterFieldDefinition.CurrentValues;

            crParameterValues.Clear();
            crParameterValues.Add(crParameterDiscreteValue);
            crParameterFieldDefinition.ApplyCurrentValues(crParameterValues);

            FrontPageReport.ViewerCore.ReportSource = cryRpt;

我使用 ODBC 数据源管理器工具创建了一个与 CrystalReport 镜像的数据源。但是我仍然得到总是失败的登录弹出窗口。

有人可以帮忙吗?

编辑:

事实证明这与子报表无关,事实上它似乎完全是随机的,哪些报告工作和不工作,都使用 dame 数据库、相同的表、相同的数据源、相同的登录。

如果我在 Visual Studio 中打开报告并单击“主报告预览”,我输入了一个有效的参数,它就像一个魅力,那么为什么在加载应用程序时它不能工作?

我在这里错过了什么重要的东西吗?

【问题讨论】:

    标签: c# mysql wpf crystal-reports


    【解决方案1】:

    好的,我有一个解决方案,这在我看来不是理想的解决方案,但它确实有效。基本上你必须在visual studio中用数据表替换报表的数据源,然后手动填充该数据表。

    您创建一个数据集,并在其中创建一个数据表。然后向该数据表中添加表示为报告返回的数据的列(例如从 select 语句返回的列)

    然后您使用类似于以下代码的内容。请记住,这是使用 mysql,但对于 sql 服务器,该过程不会有太大变化。

    ReportDocument cryRpt = new ReportDocument();
                MySqlConnection cn = new MySqlConnection("Server=IPADDRESS;Uid=USERNAME;Pwd=PASSWORD;Database=DATABASENAME;");
                //This is where you run the sql to select, as you can see, we're using a procedure
                MySqlDataAdapter da = new MySqlDataAdapter("CALL letter_head_address()", cn);
                DataSet ds = new DataSet();
                //This is where you fill the data table, the second parameter is the name of the data table you previously created.
                da.Fill(ds, "my_dt");
                cryRpt.Load(path);
                cryRpt.DataSourceConnections.Clear();
                cryRpt.SetDataSource(ds);
    

    希望这会帮助其他人,我会继续研究为什么会发生最初的问题。

    【讨论】:

      【解决方案2】:

      我的问题已通过将 app.config 文件更改为:

      <startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup>
      

      到:

      <startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v4.0"/></startup>
      

      从帖子中获得:https://social.msdn.microsoft.com/Forums/vstudio/en-US/fc4640ed-72ac-4e02-be68-6fe9760c50f8/could-not-load-file-or-assembly-filecprogram-files-x86sap-businessobjectscrystal-reports?forum=csharpgeneral&prof=required

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        • 2010-11-07
        • 1970-01-01
        • 2011-05-01
        • 1970-01-01
        相关资源
        最近更新 更多