1

私は他のプログラマーの助けを借りてこのコードを書きました。このコードは、Windows 7 で実行すると完全に機能しますが、プログラムを Windows XP にインストールすると、ログオンに失敗します。Windows XP マシンに .Net Framework 4.0 と Crystal Reports の 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で、そこで機能します)。

ここでの2つ目は別の問題ですが、最終的に(私の暴言の前に)実行時に接続を交換する落とし穴についての情報があります。

上記のコードは、私のすべての環境で機能しました。ここで、あなたの場合、XPボックスがCrystalの外部のデータベースサーバーにもアクセスできることを確認する必要があります(ファイアウォールがブロックされていない、サーバーがアクセスを拒否していない、ネットワークを停止しているACLが配置されていない)ルーティングなど)。何年にもわたって、Crystalとの接続の交換は非常に特殊であることがわかりました。

于 2012-07-05T15:22:47.557 に答える