2017-02-03 13 views
2

Я хочу распечатать несколько отчетов в соответствии с состоянием печати с разными данными одновременно с использованием отчета Crystal в C# .net , Для бывших: В моей задаче существует 5 видов печати статуса, т.е.Печать нескольких отчетов с различными данными в соответствии с условием в то же время с использованием отчета о кристальном соке в C# .net

  1. Оригинальное
  2. Дубликат
  3. Triplicate
  4. Choblicate
  5. Все

это 5 статус в опции CheckBox , Теперь, если какой-либо один человек выбрал вариант оригинала, а также дубликат, и нажав кнопку в это время, необходимо отобразить выбранный отчет о статусе флажка, то есть был показан оригинал, а также дублированный отчет с другим статусом.

Разное Статус означает: в исходном отчете он показывает исходный статус, в то время как в двойном отчете он показывает дублирующийся статус.

такой же, как если бы любой другой человек проверял все параметры в то время, все страницы отчета должны отображаться одновременно с другим статусом.

Я могу сделать это для любого статуса отчета только в то время, но ничего не узнаю о множественном статусе.

Вот мой код для любого статуса отчета.

private void btn_previewdocument_Click(object sender, EventArgs e) 
     { 
      try 
      { 
       string mtmptbl = "TmpRetailInvoicePrint"; 
       RetailInvoicePrint frm = new RetailInvoicePrint(); 
       Cursor = Cursors.WaitCursor; 
       timer1.Enabled = true; 

       ReportDocument cryRpt = new ReportDocument(); 
       SqlCommand MyCommand = new SqlCommand(); 
       SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(cn.ConnectionString); 
       ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
       TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 

       string qryPreviewDocument = " SELECT distinct Client.clientname as ClientName, " + System.Environment.NewLine; 
       qryPreviewDocument += " RetailInvoice.invoiceno as InvoiceNo, " + System.Environment.NewLine; 
       qryPreviewDocument += " RetailInvoice.pono as PoNO, RetailInvoice.issuedate as IssueDate, RetailInvoice.duedate as DueDate, " + System.Environment.NewLine; 
       qryPreviewDocument += " RetailInvoice.discount as Discount, RetailInvoice.shipping as Shipping, RetailInvoice.tax as Tax, RetailInvoice.vat as Vat, " + System.Environment.NewLine; 
       qryPreviewDocument += " RetailInvoice.sese as Sese, RetailInvoice.paymenttype as PaymentType, RetailInvoice.chequeno as Chequeno, RetailInvoice.totalamt as TotalAmt, " + System.Environment.NewLine; 
       qryPreviewDocument += " RetailInvoice.description as Description, RetailInvoice.paymentpaid as PaymentPaid, RetailInvoice.subtotal as Subtotal, " + System.Environment.NewLine; 

       qryPreviewDocument += " RetailInvoicePayment.productid as ProductName, RetailInvoicePayment.uom as Uom, " + System.Environment.NewLine; 
       qryPreviewDocument += " RetailInvoicePayment.quantity as Quantity, RetailInvoicePayment.price as Price " + System.Environment.NewLine; 

       qryPreviewDocument += " into " + mtmptbl + " " + System.Environment.NewLine; 

       qryPreviewDocument += " from tbl_retailinvoice RetailInvoice LEFT OUTER JOIN tbl_retailinvoicepayment RetailInvoicePayment " + System.Environment.NewLine; 
       qryPreviewDocument += " ON RetailInvoice.invoiceno = RetailInvoicePayment.invoiceno " + System.Environment.NewLine; 
       qryPreviewDocument += " LEFT OUTER JOIN tbl_clientdetail Client ON RetailInvoice.clientid = Client.clientid " + System.Environment.NewLine; 

       qryPreviewDocument += " where RetailInvoice.BranchID = " + lbl_branchid.Text + " " + System.Environment.NewLine; 
       qryPreviewDocument += " and RetailInvoice.YearID = " + lbl_yearid.Text + " " + System.Environment.NewLine; 
       qryPreviewDocument += " and RetailInvoice.invoiceno = " + txt_invoice.Text + ""; 

       qryPreviewDocument += " and RetailInvoicePayment.BranchID = " + lbl_branchid.Text + " " + System.Environment.NewLine; 
       qryPreviewDocument += " and RetailInvoicePayment.YearID = " + lbl_yearid.Text + " " + System.Environment.NewLine; 
       qryPreviewDocument += " and RetailInvoicePayment.invoiceno = " + txt_invoice.Text + ""; 

       string SQL = "select upper(name) as TABLE_NAME FROM sysobjects WHERE type = 'U' and name = '" + mtmptbl + "' order by name"; 
       DataTable dt = new DataTable(); 
       SqlDataAdapter da = new SqlDataAdapter(SQL, cn); 
       da.Fill(dt); 
       if (dt.Rows.Count > 0) 
       { 
        string qrydrop = "drop table " + mtmptbl + ""; 
        SqlCommand cmd = new SqlCommand(qrydrop, cn); 
        cn.Open(); 
        cmd.ExecuteNonQuery(); 
        cn.Close(); 
       } 

       MyCommand = new SqlCommand(qryPreviewDocument, cn); 
       MyCommand.CommandType = CommandType.Text; 
       cn.Open(); 
       MyCommand.ExecuteNonQuery(); 
       cn.Close(); 

       string crReportPath = Application.StartupPath.Replace("bin\\Debug", "") + "\\Print"; 

       cryRpt.Load(crReportPath + "\\RptRetailInvoice.rpt"); 

       builder.ConnectionString = System.Configuration.ConfigurationSettings.AppSettings["con"]; 
       string dbName = builder.InitialCatalog; 
       string dbDataSource = builder.DataSource; 
       string userID = builder.UserID; 
       string pass = builder.Password; 

       crConnectionInfo.ServerName = dbDataSource; 
       crConnectionInfo.DatabaseName = dbName; 
       crConnectionInfo.UserID = userID; 
       crConnectionInfo.Password = pass; 

       Tables Crtables; 
       Crtables = cryRpt.Database.Tables; 

       foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in Crtables) 
       { 
        crtableLogoninfo = CrTable.LogOnInfo; 
        crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
        CrTable.ApplyLogOnInfo(crtableLogoninfo); 
       } 

       frm.crystalReportViewer1.ReportSource = cryRpt; 
       frm.crystalReportViewer1.RefreshReport(); 

       Cursor = Cursors.Arrow; 
       frm.Show(); 
       btn_reset.Focus(); 
      } 
      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 
      } 
     } 

Этот код я сделал под событием клика btn_previewdocument. Поэтому, когда это событие произойдет в это время, будет создан отчет.

Предварительная благодарность.

+0

Я ничего не видел в вашем коде, который изменил отчет за m оригинал, чтобы дублировать, путешествие и т. д. – BugFinder

+0

Yah. Поскольку этот код предназначен для печати одного отчета и для нескольких отчетов, я путаюсь, что там, где будет использоваться несколько кодов. –

+0

Что значит печать? в самом принтере или просто показать несколько отчетов в качестве экрана? –

ответ

0

Я пытался обнаружить (и не смог) область в вашем отчете, которая обозначила ее как «оригинал», «дубликат» и т. Д., Короче говоря, мой совет будет использовать большую часть этого и реорганизовать его в «printreport», метод, с помощью переменной, которая означает, что статус, то в вашем случае, вы бы тогда код что-то вроде следующего псевдокода

if selected_original then printreport("original") 
if selected_duplicate then printreport("dupliate") 
... 
if selected_all then 
    printreport("original") 
& printreport("dupliate") 
& ... 

, что строка, конечно, может быть изменен, но при необходимости используется в отчете для обозначения его статус (поскольку я не видел, как вы это делаете в своем коде, мне придется оставить это для вас)

+0

в моем коде эта строка загружает кристалл "reportcryRpt.Load (crReportPath +" \\ RptRetailInvoice.rpt ");". Итак, как я могу реализовать множественный отчет нагрузки в такой строке. –

+0

вы не делаете повторных звонков на одно и то же ... или распечатываете x копий – BugFinder