如何使用SAP Crystal报告在C#.NET中为多个不同的发票编号打印多个新页面



我想根据他们的发票编号打印多页。例如,有两个选项用于打印和到的账单,这意味着发票编号发票编号,即我想打印发票编号 6 到 10,对于不同的发票编号,将打印不同的页面。从我下面的代码中,显示多个页面,但不是根据它根据数据显示的发票编号[即,当数据在一页上已满时,它会显示第二页]。但我不想要这个。

这是我的代码,

try
{
    string mtmptbl = "TmpTaxInvoicePrint";
    RetailInvoicePrint frm = new RetailInvoicePrint();
    Cursor = Cursors.WaitCursor;
    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 Company.companyname, Company.address, Company.city, Company.state, Company.phono, Company.gtin as CompanyGTinNo, Company.ctin as CompanyCTinNo, Company.gtindate as CompanyGTinDate, " + System.Environment.NewLine;
    qryPreviewDocument += " Client.clientname, Client.contactname, Client.billingaddrtess, Client.GTin as ClientGTinNo, Client.CTin as ClientCTinNo, Client.gtindate as ClientGTinDate, Client.ctindate as ClientCTinDate, " + System.Environment.NewLine;
    qryPreviewDocument += " TaxInvoice.invoiceno, TaxInvoice.pono, TaxInvoice.pono2, TaxInvoice.pono3, TaxInvoice.pono4, " + System.Environment.NewLine;
    qryPreviewDocument += " TaxInvoice.issuedate as IssueDate, " + System.Environment.NewLine;
    qryPreviewDocument += " TaxInvoice.discount as Discount, TaxInvoice.shipping as Shipping, TaxInvoice.tax as Tax, TaxInvoice.vat as Vat, " + System.Environment.NewLine;
    qryPreviewDocument += " TaxInvoice.sese as Sese, TaxInvoice.paymenttype as PaymentType, TaxInvoice.chequeno as Chequeno, TaxInvoice.totalamt as TotalAmt, " + System.Environment.NewLine;
    qryPreviewDocument += " TaxInvoice.description as Description, TaxInvoice.paymentpaid as PaymentPaid, TaxInvoice.subtotal as Subtotal, " + System.Environment.NewLine;
    qryPreviewDocument += " Product.productname as ProductName, TaxInvoiceProductDetail.uom as Uom, " + System.Environment.NewLine;
    qryPreviewDocument += " TaxInvoiceProductDetail.quantity as Quantity, TaxInvoiceProductDetail.price as Price, " + System.Environment.NewLine;
    qryPreviewDocument += " TaxInvoiceProductDetail.challanno as ChallanNo, TaxInvoiceProductDetail.issuedate as ChallanDate " + System.Environment.NewLine;
    qryPreviewDocument += " into " + mtmptbl + " " + System.Environment.NewLine;
    qryPreviewDocument += " from tbl_TaxInvoice TaxInvoice " + System.Environment.NewLine;
    qryPreviewDocument += " LEFT OUTER JOIN tbl_TaxInvoiceProductDetail TaxInvoiceProductDetail ON TaxInvoice.invoiceno = TaxInvoiceProductDetail.invoiceno " + System.Environment.NewLine;
    qryPreviewDocument += " LEFT OUTER JOIN tbl_clientdetail Client ON TaxInvoice.clientid = Client.clientid " + System.Environment.NewLine;
    qryPreviewDocument += " LEFT OUTER JOIN tbl_companydetail Company ON TaxInvoice.BranchID = Company.companyid " + System.Environment.NewLine;
    qryPreviewDocument += " LEFT OUTER JOIN tbl_product Product ON TaxInvoiceProductDetail.productid = Product.productid " + System.Environment.NewLine;
    qryPreviewDocument += " where TaxInvoice.BranchID = " + lbl_branchid.Text + " " + System.Environment.NewLine;
    qryPreviewDocument += " and TaxInvoice.YearID = " + lbl_yearid.Text + " " + System.Environment.NewLine;
    qryPreviewDocument += " and TaxInvoice.invoiceno = " + txt_invoice.Text + "";
    qryPreviewDocument += " and TaxInvoiceProductDetail.BranchID = " + lbl_branchid.Text + " " + System.Environment.NewLine;
    qryPreviewDocument += " and TaxInvoiceProductDetail.YearID = " + lbl_yearid.Text + " " + System.Environment.NewLine;
    qryPreviewDocument += " and TaxInvoiceProductDetail.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();
    //Add BillType field to the tmptable
    using (MyCommand = new SqlCommand("alter table [" + mtmptbl + "] add [billtype] varchar(20) NULL", cn))
    {
        MyCommand.CommandType = CommandType.Text;
        MyCommand.ExecuteNonQuery();
    }
    cn.Close();
    string crReportPath = Application.StartupPath.Replace("bin\Debug", "") + "\Print";
    cryRpt.Load(crReportPath + "\RptTaxInvoicePrint.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);
}

提前致谢

这可以通过将组头部分添加到发票编号来完成。

最新更新