printreport()方法挂断了我的报告

2020-09-03 18:26发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用c#前端和SQL Server 2016后端的桌面应用程序。我使用Crystal Report进行报告。 我有问题 我陷在这个问题上了。

我有一个具有以下方法的表格。

私有无效SaleReport_Load(对象发送者,EventArgs e)
         {
             this.WindowState = FormWindowState.Maximized;
             this.KeyUp + =新的System.Windows.Forms.KeyEventHandler(KeyEvent);
             如果(txtSaleId.Text!="" && txtSaleId.Text!=" 0")
             {
                 ShowReport();
                 crystalReportViewer1.PrintReport();
                //this.Hide();
             }
         }


         私人无效ShowReport()
         {
             if(crud.selectint(" Select Count(*)从SaleModels a,SaleDetailModels b,ProductModels c,ProductTypes d,PharmacyDetails e,其中a.Id = b.SaleId和b.ProductId = c.Id和c.ProductTypeId = d。  id和e.Id = c.pharmacyId和a.Id ='" + txtSaleId.Text +"'")== 0)
             {
                 MessageBox.Show("请输入有效的发票编号。未找到数据....");
             }
             其他
             {
                 字符串查询="选择e.CompanyName,e.Address,ISNULL(e.ContactNoMob +',','')+ ISNULL(e.ContactNoTel,'')作为'Contact No',Convert(Varchar(12),a  .Id)为'发票编号',c.ProductName +''+ ISNULL(c.Potency +'',))+ d。描述为'Product',b.ProductQuantity,Convert(Decimal(16,2),  b.ProductUnitPrice +(b.TaxAmount/b.ProductQuantity))作为'UnitPrice',Convert(decimal(16,2),a.TotalSalePrice)作为'TotalSalePrice'来自SaleModels a,SaleDetailModels b,ProductModels c,ProductTypes d,PharmacyDetails  e其中,a.Id = b.SaleId和b.ProductId = c.Id和c.ProductTypeId = d.Id和e.Id = c.pharmacyId和a.Id ='" + txtSaleId.Text +"'";


                 crud.ShowReport2(crystalReportViewer1," rptSale.rpt",查询);
             }
         }


         私有无效btnClose_Click(对象发送者,EventArgs e)
         {
             关();
         }


         私有void KeyEvent(对象发送者,KeyEventArgs e)
         {
             如果((e.KeyCode == Keys.P)&& e.Control)
             {
                 crystalReportViewer1.PrintReport();
             }
         }
 

ShowReport2()函数如下所述

公共无效的ShowReport2(CrystalDecisions.Windows.Forms.CrystalReportViewer crystalReportViewer1,字符串ReportName,字符串Query)
         {
             尝试
             {
                 SqlConnection con =新的SqlConnection();
                 con.ConnectionString = ConnectionString;
                 con.Open();
                 SqlDataAdapter dscmd =新的SqlDataAdapter(Query,con);
                 DataSet ds = new DataSet();
                 dscmd.Fill(ds,ReportName);
                 con.Close();


                 if(ReportName =="批发")
                 {
                     bin.Debug.Reports.rptFullSale objRpt =新的bin.Debug.Reports.rptFullSale();
                     objRpt.SetDataSource(ds.Tables [ReportName]);
                     crystalReportViewer1.ReportSource = objRpt;
                     crystalReportViewer1.Refresh();
                 }
             }
             抓住(前例外)
             {
                 MessageBox.Show(ex.Message);
             }
 

问题在SaleReport_Load函数下。 当它运行命令crystalReportViewer1.PrintReport();时。 在加载方法中,我的报告将打开一个打印对话框。 如果我确定要打印的报告,它将正确打印收据,但计算机挂断了电话。 我必须使用任务管理器关闭完整的应用程序,就像当我按Keyevent函数中定义的那样按ctrl + p时,它还会打开对话框。 确定该盒子可以正确取出收据,并且计算机也不会挂断。 相同的功能在不同的位置会有不同的反应。

有谁能告诉我为什么?

预先感谢

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我正在使用c#前端和SQL Server 2016后端的桌面应用程序。我使用Crystal Report进行报告。 我有问题 我陷在这个问题上了。

我有一个具有以下方法的表格。

私有无效SaleReport_Load(对象发送者,EventArgs e)
         {
             this.WindowState = FormWindowState.Maximized;
             this.KeyUp + =新的System.Windows.Forms.KeyEventHandler(KeyEvent);
             如果(txtSaleId.Text!="" && txtSaleId.Text!=" 0")
             {
                 ShowReport();
                 crystalReportViewer1.PrintReport();
                //this.Hide();
             }
         }


         私人无效ShowReport()
         {
             if(crud.selectint(" Select Count(*)从SaleModels a,SaleDetailModels b,ProductModels c,ProductTypes d,PharmacyDetails e,其中a.Id = b.SaleId和b.ProductId = c.Id和c.ProductTypeId = d。  id和e.Id = c.pharmacyId和a.Id ='" + txtSaleId.Text +"'")== 0)
             {
                 MessageBox.Show("请输入有效的发票编号。未找到数据....");
             }
             其他
             {
                 字符串查询="选择e.CompanyName,e.Address,ISNULL(e.ContactNoMob +',','')+ ISNULL(e.ContactNoTel,'')作为'Contact No',Convert(Varchar(12),a  .Id)为'发票编号',c.ProductName +''+ ISNULL(c.Potency +'',))+ d。描述为'Product',b.ProductQuantity,Convert(Decimal(16,2),  b.ProductUnitPrice +(b.TaxAmount/b.ProductQuantity))作为'UnitPrice',Convert(decimal(16,2),a.TotalSalePrice)作为'TotalSalePrice'来自SaleModels a,SaleDetailModels b,ProductModels c,ProductTypes d,PharmacyDetails  e其中,a.Id = b.SaleId和b.ProductId = c.Id和c.ProductTypeId = d.Id和e.Id = c.pharmacyId和a.Id ='" + txtSaleId.Text +"'";


                 crud.ShowReport2(crystalReportViewer1," rptSale.rpt",查询);
             }
         }


         私有无效btnClose_Click(对象发送者,EventArgs e)
         {
             关();
         }


         私有void KeyEvent(对象发送者,KeyEventArgs e)
         {
             如果((e.KeyCode == Keys.P)&& e.Control)
             {
                 crystalReportViewer1.PrintReport();
             }
         }
 

ShowReport2()函数如下所述

公共无效的ShowReport2(CrystalDecisions.Windows.Forms.CrystalReportViewer crystalReportViewer1,字符串ReportName,字符串Query)
         {
             尝试
             {
                 SqlConnection con =新的SqlConnection();
                 con.ConnectionString = ConnectionString;
                 con.Open();
                 SqlDataAdapter dscmd =新的SqlDataAdapter(Query,con);
                 DataSet ds = new DataSet();
                 dscmd.Fill(ds,ReportName);
                 con.Close();


                 if(ReportName =="批发")
                 {
                     bin.Debug.Reports.rptFullSale objRpt =新的bin.Debug.Reports.rptFullSale();
                     objRpt.SetDataSource(ds.Tables [ReportName]);
                     crystalReportViewer1.ReportSource = objRpt;
                     crystalReportViewer1.Refresh();
                 }
             }
             抓住(前例外)
             {
                 MessageBox.Show(ex.Message);
             }
 

问题在SaleReport_Load函数下。 当它运行命令crystalReportViewer1.PrintReport();时。 在加载方法中,我的报告将打开一个打印对话框。 如果我确定要打印的报告,它将正确打印收据,但计算机挂断了电话。 我必须使用任务管理器关闭完整的应用程序,就像当我按Keyevent函数中定义的那样按ctrl + p时,它还会打开对话框。 确定该盒子可以正确取出收据,并且计算机也不会挂断。 相同的功能在不同的位置会有不同的反应。

有谁能告诉我为什么?

预先感谢

付费偷看设置
发送
1条回答
Cikesha
1楼-- · 2020-09-03 19:23

crud.ShowReport2(crystalReportViewer1," FullSale",查询);

我在上面的描述中写错了这一行

一周热门 更多>