Computechsoft Ответов: 1

Без открытой печати документа прямая печать на принтере


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

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

Dim ConnectionInfo As ConnectionInfo = New ConnectionInfo()
Dim CashReceipt As New ReportDocument()
CashReceipt.Load(Application.StartupPath & "\Reports\Sale Reports\CashReceipt.rpt")
Dim MyTables As Tables = CashReceipt.Database.Tables

For Each MyTable As CrystalDecisions.CrystalReports.Engine.Table In MyTables
   Dim MyTableLogonInfo As TableLogOnInfo = MyTable.LogOnInfo
   ConnectionInfo.ServerName = ".\SQLEXPRESS"
   ConnectionInfo.DatabaseName = ""Admin
   ConnectionInfo.UserID = "sa"
   ConnectionInfo.Password = "admin"
   ConnectionInfo.IntegratedSecurity = False
   MyTableLogonInfo.ConnectionInfo = ConnectionInfo
   MyTable.ApplyLogOnInfo(MyTableLogonInfo)
Next

RPTfrmCashReport.CrystalReportViewer1.ReportSource = CashReceipt

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

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

1 Ответов

Рейтинг:
10

Wendelius

Чтобы использовать что-то другое, кроме принтера по умолчанию, вам необходимо использовать Документе.Свойство PrintOptions[^]

Взгляните на это Члены PrintOptions (CrystalDecisions.CrystalReports.Двигатель) | Microsoft Docs[^]. Там вы найдете PrintOptions.Собственность Имя_принтера [^]. Вы можете использовать его для установки нужного принтера и перед печатью установить параметры печати для документа отчета.

Для небольшой реализации взгляните на Выбор принтера при печати из Crystal Reports в C#[^]


Computechsoft

Я применил это, но та же ситуация "OneNote открывает не прямую печать"


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

CashReceipt.RecordSelectionFormula = mySelectionFormula

Dim printDocument = новая печать.Объект printdocument
CashReceipt.PrintOptions.Имя_принтера = объект printdocument.Типографские установки.Имя_принтера
CashReceipt.PrintToPrinter(1, True, 1, 1)

Wendelius

Поскольку вы не меняете имя принтера в объекте PrintDocument, вы получаете тот же принтер по умолчанию.

Чтобы начать работу, попробуйте просто установить правильное имя принтера для ваших параметров печати. Что-то вроде

CashReceipt.PrintOptions.PrinterName = "MyDesiredPrinterName"


При необходимости вы можете перечислить установленные принтеры с помощью Типографские установки.Свойство InstalledPrinters (System.Рисование.Печать) | Microsoft Docs[^]

Computechsoft

Я говорю, что не хочу открывать эти документы
(Microsoft Print to pdf)
(Microsoft XPS Document writer)
(программа OneNote)

Квитанцию непосредственно печатают на принтере, перед печатью не открывают квитанцию в этих документах?

Wendelius

Я не понимаю, зачем вам открывать этот документ. Если вы зададите принтеру имя, которое хотите использовать, квитанция будет напечатана на этом принтере. Основываясь на предоставленных вами кодах, вы всегда используете принтер по умолчанию, и если принтер по умолчанию-OneNote, то документ будет напечатан с его помощью.

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

Если принтер еще не установлен на вашем компьютере, сначала подключитесь к нему, а затем используйте правильное имя принтера. Дополнительные сведения о добавлении принтера см. В разделе https://support.microsoft.com/en-us/help/4015386/windows-10-install-printer[^]

Computechsoft

Спасибо, что большая проблема решена. Я могу писать по-английски, но не очень хорошо, надеюсь, вы поймете меня лучше.
Вы гениальный человек, вы решаете этот вопрос очень технически.
Наконец, я хотел бы пожелать вам всем очень успешного будущего.

С уважением.

Wendelius

Пожалуйста