1

我在其他程序员的帮助下编写了这段代码。此代码在 Windows 7 上运行时运行良好,但当我在 Windows XP 上安装程序时登录失败。我已经在 Windows XP 机器上安装了 Crystal Reports 的 .Net Framework 4.0 和 CRforVS_13_0_3。

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Shared; 


label2.Text = Convert.ToString(BAssistencia.nroo);
ReportDocument segredo = new ReportDocument();
        segredo.Load(@"C:/Relatorios/CrystalReport3.rpt");
        ParameterField pf1 = new ParameterField();
        ParameterFields pf1s = new ParameterFields();
        ParameterDiscreteValue pdv = new ParameterDiscreteValue();
        TableLogOnInfo tabla = new TableLogOnInfo();
        TableLogOnInfos tablas = new TableLogOnInfos();
        ConnectionInfo infocon = new ConnectionInfo();
        Tables crtables;

        infocon.ServerName = "server";
        infocon.DatabaseName = "database";
        infocon.UserID = "user";
        infocon.Password = "password";
        infocon.IntegratedSecurity = false;

        crtables = segredo.Database.Tables;
        foreach (CrystalDecisions.CrystalReports.Engine.Table crtable in crtables)
        {
            tabla = crtable.LogOnInfo;
            tabla.ConnectionInfo = infocon;
            crtable.ApplyLogOnInfo(tabla);
        }

        pf1.Name = "@pedido";
        pdv.Value = label2.Text;
        pf1.CurrentValues.Add(pdv);
        pf1s.Add(pf1);
        crystalReportViewer1.ParameterFieldInfo = pf1s;

        crystalReportViewer1.ReportSource = segredo;

我究竟做错了什么???

4

1 回答 1

0

一些链接,第一个是我编写的与 Crystal 一起使用的扩展方法(在 XP、Vista 和 7 以及 Server 2003、2008 上,它们在那里工作)。

这里的第二个有一个不同的问题,但最后(在我咆哮之前)我有一些关于在运行时交换连接的陷阱的信息。

上面提供的代码在我的所有环境中都适用于我。现在,在您的情况下,您还需要确保 XP 框也可以访问 Crystal 之外的数据库服务器(没有防火墙阻止,服务器没有拒绝它访问,没有 ACL 阻止网络路由等)。多年来,我发现与 Crystal 交换连接非常特别。

于 2012-07-05T15:22:47.557 回答