Computechsoft Ответов: 1

Прямая печать конкретной записи


Я хочу печатать непосредственно без просмотра и с определенной записью
Эта строка показывает все записи

RptObject.PrintToPrinter(1, false, 0, 0)

Что я уже пробовал:

-RPTfrmCashReport.CrystalReportViewer1.ReportSource = InvoicePrint

RptObject.PrintToPrinter(1, false, 0, 0)
CrystalReportViewer1.SelectionFormula = "{Invoice_Master.Invoice_no} = '" & LblInvoiceno.Текст & "'"

Christian Graus

Я не могу понять смысла этого вопроса. Что такое RptObject? Какие технологии вы используете и должны были отметить в своем вопросе? Что происходит, когда вы пробуете этот код? С какими проблемами вы столкнулись?

Computechsoft

к сожалению, некоторые опечатки
Я хочу отправить прямую печать на принтер без просмотра я использую эту строку "PrintToPrinter", но эта строка показывает все записи, Как определить конкретную запись в этой строке так же, как "формула выбора"
CrystalReportViewer1.ReportSource = InvoicePrint

InvoicePrint.PrintToPrinter(1, false, 0, 0)
CrystalReportViewer1.SelectionFormula = "{Invoice_Master.Invoice_no} = '" & LblInvoiceno.Текст & "'"

1 Ответов

Рейтинг:
6

Wendelius

Попробуйте также использовать Свойство CrystalReportViewer.ViewTimeSelectionFormula[^]


Computechsoft

Да, я использую CrystalReportViewer. Моя формула выбора работает нормально, никаких проблем в этом нет. Поэтому при отправке отчета непосредственно на принтер я использую эту строку

InvoicePrint.PrintToPrinter(1, false, 0, 0)

Эта строка показывает все записи, Как установить конкретную запись в этой строке так же, как формула выбора в нижней строке.

CrystalReportViewer1.SelectionFormula = "{Invoice_Master.Invoice_no} = '" & LblInvoiceno.Текст & "'"

Wendelius

Не уверен, правильно ли я понимаю ситуацию. Вы хотите сказать, что фильтрация работает правильно при предварительном просмотре печати, но не работает при прямой печати?

Если это так, то по крайней мере одна проблема в вашем примере кода заключается в том, что вы сначала печатаете, а затем устанавливаете фильтр. Это должно быть наоборот.

Кроме того, как было сказано в моем первоначальном ответе, если вы еще не пробовали ViewTimeSelectionFormula собственность, пожалуйста. Он ведет себя иначе, чем свойство SelectionFormula.

Если они не помогают, то совершенно другой подход может заключаться в ограничении данных в источнике данных. Например, если InvoicePrint это таблица данных, вы можете использовать DataView для фильтрации данных, чтобы содержать только соответствующие записи и передавать данные из представления в отчет. Этот подход может быть проще, чем управление фильтрами внутри отчета

Computechsoft

Да что я говорю? эта фильтрация корректно работает с предварительным просмотром печати, но не работает при прямой печати?

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

Dim mySelectionFormula As String = "{Invoice_Master.Invoice_no} = '" & LblInvoiceno.Text & "'" CrystalReportViewer1.ViewTimeSelectionFormula = mySelectionFormula

Wendelius

Вы еще не опубликовали полный код, который используете, но я так понимаю, что вы используете ReportDocument напрямую? Если это правильно, вы должны установить Документе.Свойство RecordSelectionFormula[^]

Если это неверно, пожалуйста, разместите все соответствующие коды, которые вы используете для печати.

Computechsoft

Dim ConnectionInfo As ConnectionInfo = New ConnectionInfo()
Дим CashReceipt В Новом Документе()
CashReceipt.приложение нагрузки.StartupPath & "\Reports\Sale Reports\CashReceipt.rpt")
Dim MyTables As Tables = CashReceipt.База данных.Таблицы

Для Каждого MyTable Как CrystalDecisions.CrystalReports.Двигатель.Таблица В MyTables
Dim MyTableLogonInfo As TableLogOnInfo = MyTable.LogOnInfo
ConnectionInfo.ServerName = ".\Отчеты"
ConnectionInfo.Имя Базы Данных = ""Админ
ConnectionInfo.Идентификатор пользователя = "СА"
ConnectionInfo.Пароль = "админ"
ConnectionInfo.Свойство Integratedsecurity = Ложь
MyTableLogonInfo.ConnectionInfo = ConnectionInfo
таблица MyTable.ApplyLogOnInfo(MyTableLogonInfo)
Следующий

RPTfrmCashReport.CrystalReportViewer1.ReportSource = CashReceipt

CashReceipt.PrintToPrinter(1, False, 0, 0)

Dim mySelectionFormula As String = "{Invoice_Master.Invoice_no} = '" & FrmSalebill.LblInvoiceno.Текст & "'"
RPTfrmCashReport.CrystalReportViewer1.ViewTimeSelectionFormula = mySelectionFormula

Wendelius

Как уже было сказано, Если вы используете ReportDocument для печати без ReportViewer, вам нужно установить RecordSelectionFormula. Так что попробуйте суммировать что-то вроде

...
   MyTable.ApplyLogOnInfo(MyTableLogonInfo)
Next

Dim mySelectionFormula As String = "{Invoice_Master.Invoice_no} = '" & FrmSalebill.LblInvoiceno.Text & "'"

CashReceipt.RecordSelectionFormula = mySelectionFormula
CashReceipt.PrintToPrinter(1, False, 0, 0)
...

Computechsoft

Его нормально печатать непосредственно на принтере, но открывается принтер Microsoft default printer (OneNote). Но моя квитанция-это (POS) печать.

Wendelius

Это совершенно другой вопрос.

Но да, принтер по умолчанию используется, если вы не укажете какой-то другой принтер. Смотрите документацию в разделе Документе.Метод PrintToPrinter (CrystalDecisions.CrystalReports.Двигатель) | Microsoft Docs[^]

Quote:
Prints the specified pages of the report to the printer selected using the PrintOptions.PrinterName property. If no printer is selected, the default printer specified in the report will be used.

Computechsoft

Я применил это, но печать идет на принтере, но открывается "OneNote"
Я не хочу открывать "OneNot".
Непосредственно печатайте на принтере много добавлений, приходящих между печатью. Точно так же, как POS-печать.

Wendelius

Как уже было сказано, смена принтера-это другой вопрос, поэтому я предложил открыть еще один пост. Не забудьте включить в свой вопрос весь соответствующий код.

Computechsoft

Я создаю еще один пост.