如何修复在设置报告参数时发生的rdlc本地报告处理错误

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何修复在设置报告参数时发生的rdlc本地报告处理错误相关的知识,希望对你有一定的参考价值。

我想不使用report-viewer来保存rdlc报告,并且没有报告参数也可以成功,因为当我尝试向报告中添加报告参数时出现“报告处理错误”。

我试图保存不带参数的报告,并且可以正常工作,但是一旦添加参数,它就会产生此错误。

try
{
                using (IDbConnection db = new SQLiteConnection(ConfigurationManager.ConnectionStrings["cs"].ConnectionString))
                {
                    if (db.State == ConnectionState.Closed)
                    {
                        db.Open();
                    }
                    string getOrderItems = "Select * from OrderItems where OrderId = 20";
                    List<OrderItem> orderItems = db.Query<OrderItem>(getOrderItems, commandType: CommandType.Text).ToList();
                    OrderItemBindingSource.DataSource = orderItems;
                }
                LocalReport orderReceipt = new LocalReport();
                orderReceipt.ReportPath = @"D:ADiTMProductsADiTmPoSADiTmPoSReportsOrderReceipt.rdlc";
                ReportDataSource rds = new ReportDataSource();
                rds.Name = "orderItem";
                rds.Value = this.OrderItemBindingSource;
                orderReceipt.DataSources.Add(rds);
                ReportParameter[] parameters = new ReportParameter[]
                {
                    new ReportParameter("CustomerName",orderDetail.CustomerName),
                    new ReportParameter("CustomerContactNumber",orderDetail.CustomerContactNumber),
                    new ReportParameter("CustomerAddress",orderDetail.CustomerAddress),
                    new ReportParameter("OrderId",orderDetail.Id.ToString()),
                    new ReportParameter("Date",orderDetail.Date.ToString("MM/DD/yyyy")),
                    new ReportParameter("Status",orderDetail.Status),
                    new ReportParameter("StaffName",orderDetail.StaffName),
                    new ReportParameter("StaffMobileNumber",orderDetail.StaffMobileNumber),
                    new ReportParameter("UserName",orderDetail.UserName)

                };
                orderReceipt.SetParameters(parameters);

                Byte[] mybytes = orderReceipt.Render("PDF");
                using (var fbd = new FolderBrowserDialog())
                {
                    DialogResult result = fbd.ShowDialog();
                    if (result == DialogResult.OK && !string.IsNullOrWhiteSpace(fbd.SelectedPath))
                    {
                        using (FileStream fs = File.Create(fbd.SelectedPath + "OrderReceipt22.pdf"))
                        {
                            fs.Write(mybytes, 0, mybytes.Length);
                        }
                        MetroFramework.MetroMessageBox.Show(this, "Order Receipt Saved", "Success!", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    }

                }
            }
            catch (Exception ex)
            {
                MetroFramework.MetroMessageBox.Show(this, ex.Message, "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }

我使用断点,并在[]上给出错误>

orderReceipt.SetParameters(parameters);

我想不使用report-viewer来保存rdlc报告,并且没有报告参数也可以成功,因为当我尝试向报告中添加报告参数时出现“报告处理错误”。 ...

答案

这是一个令人讨厌的错误消息,但是有一个鲜为人知的改进,只要您的rdlc运行时版本为> 2015,您就应该可以利用该改进:查看InnerException,并将处理程序附加到[ C0]。

以上是关于如何修复在设置报告参数时发生的rdlc本地报告处理错误的主要内容,如果未能解决你的问题,请参考以下文章

将DataSet添加到RDLC报告时崩溃

winforms 的 .rdlc 数据报告中的外部图像

Visual Studio 2013崩溃在RDLC报告中添加DataSet时

生成 .rdlc 报告在本地有效,但在部署到 azure 后无效

无预览打印本地报告 - 超出流大小或GDI + C#中发生一般错误

动态设置 RDLC 报告中的图像源