点击此处---> 群内免费提供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时,它还会打开对话框。 确定该盒子可以正确取出收据,并且计算机也不会挂断。 相同的功能在不同的位置会有不同的反应。
有谁能告诉我为什么?
预先感谢
crud.ShowReport2(crystalReportViewer1," FullSale",查询);
我在上面的描述中写错了这一行
一周热门 更多>