C # и Crystal Reports - пакетная печать - PullRequest
0 голосов
/ 06 июня 2018

У меня есть отчет (этикетка), который я печатаю, и он печатает этикетку по одному, потому что я считаю, что я делаю это внутри foreach, вызывая принтер и принтер и PrintToPrinter.Кто-нибудь знает, смогу ли я создать всю таблицу данных, а затем нажать ее для печати один раз, чтобы она печаталась намного быстрее?Прямо сейчас этикетка за этикеткой занимает довольно много времени.

Вот мой код:

protected void printKitLabelsAll(string qty)
{
    // Get item, desc from Modata using the order number
    OleDbCommand getKitLabel = new OleDbCommand($"SELECT  CAST(CITEM as char(30) ccsid 37) , CAST(CDESC as char(30) ccsid 37), CAST(FLSTK as char(30) ccsid 37) " +
        $"FROM MODATA WHERE ORDNO = '{orderNumTextBox.Text.ToUpper()}' ORDER BY CITEM", cn);
    OleDbDataAdapter kitDa = new OleDbDataAdapter(getKitLabel);
    DataTable kitDt = new DataTable();
    kitDa.Fill(kitDt);

    // For each row get order, item, desc and write to PDF
    foreach (DataRow row in kitDt.Rows)
    {
        // Get default printer
        OleDbCommand getPrinter = new OleDbCommand($"SELECT CAST(PRINT as char(50) ccsid 37) FROM EMPSET WHERE EMPNO = '{empNo}'", cnDb9);
        cnDb9.Open();
        string printName = getPrinter.ExecuteScalar().ToString();
        cnDb9.Close();

        // Create Document
        ReportDocument label = new ReportDocument();

        // Load template
        label.Load(Server.MapPath("~/Reports/kitLabel.rpt"));

        // Set parameters
        label.SetParameterValue("order", orderNumTextBox.Text.ToUpper());
        label.SetParameterValue("item", row[0].ToString());
        label.SetParameterValue("desc", row[1].ToString());

        // Print
        label.PrintOptions.PrinterName = "TSC";
        label.PrintToPrinter(int.Parse(qty), false, 0, 0);

        // Dispose label after print
        label.Close();
        label.Dispose();
    }

}

1 Ответ

0 голосов
/ 06 июня 2018

В дизайне отчета (в Crystal Designer) удалите параметры Item и Descr.Другими словами, в отчете должны просто отображаться все позиции заказа.Измените свой код так, чтобы он вводил в отчет только параметр Order.

Позволяет отчету Crystal получать данные непосредственно из источника данных.Он может легко получить одну запись для каждой позиции в заказе.

...