C# 使用C在.NET4.7.2中打印报表#

C# 使用C在.NET4.7.2中打印报表#,c#,.net,crystal-reports,C#,.net,Crystal Reports,我有一个非常基本的水晶报告,不接受任何参数。在报表查看器中打开时,系统仅提示我输入DB凭据(用户ID、密码)。一旦输入,报告将无问题执行 我的目标是在.Net桌面应用程序中打印报告。当我尝试使用load方法加载报告时,出现“load report Failed”错误 下面列出了我使用的代码: using CrystalDecisions.CrystalReports.Engine; using CrystalDecisions.Windows.Forms; using CrystalDecisi

我有一个非常基本的水晶报告,不接受任何参数。在报表查看器中打开时,系统仅提示我输入DB凭据(用户ID、密码)。一旦输入,报告将无问题执行

我的目标是在.Net桌面应用程序中打印报告。当我尝试使用load方法加载报告时,出现“load report Failed”错误

下面列出了我使用的代码:

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.Windows.Forms;
using CrystalDecisions.Shared;

        private void btnPrint_Click(object sender, EventArgs e)
        {
            string rptFullPath = @"N:\CRYSTALREPORTS\v1\NULLVALUES.RPT";

            try
            {
                PrintDialog prtDlg = new PrintDialog();
                if (prtDlg.ShowDialog() == DialogResult.OK)
                {
                    if (System.IO.File.Exists(rptFullPath))
                        MessageBox.Show("File Exists");
                    else
                        MessageBox.Show("File NOT Found");

                    CrystalDecisions.CrystalReports.Engine.ReportDocument cryRpt = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
                    TableLogOnInfos crtableLogoninfos = new TableLogOnInfos();
                    TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
                    ConnectionInfo crConnectionInfo = new ConnectionInfo();
                    Tables CrTables;

                    crConnectionInfo.UserID = "user1";
                    crConnectionInfo.Password = "mypwd";
                    
                    //>>>> The following line causes an error: Load Report Failed
                    cryRpt.Load(rptFullPath);

                    CrTables = cryRpt.Database.Tables;
                    foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
                    {
                        crtableLogoninfo = CrTable.LogOnInfo;
                        crtableLogoninfo.ConnectionInfo = crConnectionInfo;
                        CrTable.ApplyLogOnInfo(crtableLogoninfo);
                    }                    

                    MessageBox.Show("After Load");
                    cryRpt.PrintOptions.PrinterName = prtDlg.PrinterSettings.PrinterName;
                    cryRpt.PrintToPrinter(prtDlg.PrinterSettings.Copies, prtDlg.PrinterSettings.Collate, prtDlg.PrinterSettings.FromPage, prtDlg.PrinterSettings.ToPage);
                }
            }
            catch (Exception ex)
            {
                ExceptionHandling eh = new ExceptionHandling();
                eh.LogError(ex);
            }
        }