簡體   English   中英

如何在Windows應用程序中使用C#打印Crystal報表而不顯示預覽和打印機選擇

[英]How to Print Crystal Report Without Showing Preview and Printer Selection in Windows application using C#

我正在執行開票應用程序,因此我需要在沒有“預覽報告”的情況下打印帳單。 而且,我不喜歡在打印機對話框彈出窗口中選擇打印機。 它應該選擇默認打印機。

'PrintToPrinter'不能滿足我的要求。 我需要發送最新創建的BillID作為參數以獲取最新詳細信息。

如果我不使用' PrintToPrinter '語法,則打印機對話框彈出屏幕將帶有“選擇打印機”對話框。

請指導我解決這個問題。

供您參考,我附上我的代碼片段:

Report_Path = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location) + "\\Reports\\StandardBill.rpt";                        
ReportDocument rd = new ReportDocument();
rd.Load(Report_Path);
rd.SetDatabaseLogon(AccessingData.DBUserName, AccessingData.DBPassword);
ParameterFields paramFields = new ParameterFields();
ParameterField BillID = new ParameterField();
ParameterDiscreteValue discreteVal_BillID = new ParameterDiscreteValue();
BillID.ParameterFieldName = "BillNo";

discreteVal_BillID.Value = Convert.ToInt32(Bill_id);
BillID.CurrentValues.Add(discreteVal_BillID);

ParameterField CType = new ParameterField();
ParameterDiscreteValue discreteVal_CType = new ParameterDiscreteValue();
CType.ParameterFieldName = "ClientType";

discreteVal_CType.Value = ClientType;
CType.CurrentValues.Add(discreteVal_CType);

// Add parameter to the parameter fields collection.
paramFields.Add(BillID);
paramFields.Add(CType);
CRViewer1.ParameterFieldInfo = paramFields;

CRViewer1.ReportSource = rd;                        

CRViewer1.PrintReport();
rd.Close();
rd.Dispose();

你可以嘗試一下

                Dim crtableLogoninfos As New TableLogOnInfos
                Dim crtableLogoninfo As New TableLogOnInfo
                Dim crConnectionInfo As New ConnectionInfo
                Dim CrTables As Tables
                Dim CrTable As Table
                Dim cryRpt As New ReportDocument
                cryRpt.Load("report path")
                With crConnectionInfo
                    .ServerName = "servername"
                    .DatabaseName = "databasename"
                    .UserID = "userid"
                    .Password = "password"
                    .IntegratedSecurity = False

                End With
                CrTables = cryRpt.Database.Tables
                For Each CrTable In CrTables
                    crtableLogoninfo = CrTable.LogOnInfo
                    crtableLogoninfo.ConnectionInfo = crConnectionInfo
                    CrTable.ApplyLogOnInfo(crtableLogoninfo)
                Next
                cryRpt.SetDatabaseLogon("userid", crConnectionInfo.Password, crConnectionInfo.ServerName, crConnectionInfo.DatabaseName, crConnectionInfo.IntegratedSecurity)

                Dim crParameterFieldDefinitions As ParameterFieldDefinitions
                Dim crParameterFieldDefinition As ParameterFieldDefinition
                Dim crParameterValues As New ParameterValues
                Dim crParameterDiscreteValue As New ParameterDiscreteValue

                crParameterDiscreteValue.Value = BillID
                crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
                crParameterFieldDefinition = crParameterFieldDefinitions.Item("BillID")
                crParameterValues = crParameterFieldDefinition.CurrentValues
                crParameterValues.Add(crParameterDiscreteValue)
                crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
                crParameterValues.Clear()

                 cryRpt.PrintOptions.PrinterName = "printername"
                cryRpt.PrintToPrinter(1, False, 0, 0)


            End If

我認為這應該可以解決問題。 它在VB中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM