2013-06-29 63 views
4

我写了这个代码打印Crystal报表..但我有错误如何直接打印报表,而不在Crystal Reports去查看器

“缺少参数” ......

ReportDocument rdoc = new ReportDocument(); 
rdoc .Load (Application.StartupPath +"\\"[email protected]"REPORTS\SalaryReport.rpt"); 

rdoc.SetDataSource(ds.Tables[0]); 

ParameterFields pfs = new ParameterFields(); 

ParameterField pfv = new ParameterField(); 
ParameterDiscreteValue pdv1 = new ParameterDiscreteValue(); 
pfv.Name = "fd"; 
pdv1.Value = fd; 
pfv.CurrentValues.Add(pdv1); 
pfs.Add(pfv); 

ParameterField pfv1 = new ParameterField(); 
ParameterDiscreteValue pdv11 = new ParameterDiscreteValue(); 
pfv1.Name = "td"; 
pdv11.Value = td; 
pfv1.CurrentValues.Add(pdv11); 
pfs.Add(pfv1); 

ParameterField pfv2 = new ParameterField(); 
ParameterDiscreteValue pdv12 = new ParameterDiscreteValue(); 
pfv2.Name = "department"; 
pdv12.Value = Dept; 
pfv2.CurrentValues.Add(pdv12); 
pfs.Add(pfv2); 
crystalReportViewer1.ParameterFieldInfo = pfs; 
crystalReportViewer1.ReportSource = rdoc; 

PrinterSettings getprinterName = new PrinterSettings(); 
rdoc.PrintOptions.PrinterName = getprinterName.PrinterName; 
rdoc.PrintToPrinter(1, true, 1, 1); 

所以帮助解决这个问题....如何直接打印而不需要通过Crystal Reports Viewer?

回答

0
reportname report1=new reportname(); 
report1.PrintOptions.PaperOrientation = PaperOrientation.Portrait; 
report1.PrintOptions.PaperSize = PaperSize.PaperA4; 
report1.PrintToPrinter(1, false, 0, 15); 

使用这些代码与功能(参数)

0

直接打印到打印机是不会解决你的问题。 Crystal Report需要正确设置参数,并且不是由于某种原因。

0
List<BusLib.Report.ReportParameter> ParaList = new List<BusLib.Report.ReportParameter>(); 
      ParaList.Add(new BusLib.Report.ReportParameter("Para1", Value1)); 
      ParaList.Add(new BusLib.Report.ReportParameter("Para2", Value2)); 
      ParaList.Add(new BusLib.Report.ReportParameter("Para3", Value3)); 
      ParaList.Add(new BusLib.Report.ReportParameter("Para4", Value4)); 

,经过..

public void SetParameters(List<BusLib.Report.ReportParameter> pParams) 
    { 
     if (pParams == null) { return; } 
     try 
     { 
      foreach (BusLib.Report.ReportParameter pPara in pParams) 
      { 
       CReport.SetParameterValue(pPara.ParameterName, pPara.ParameterValue); 
      } 
     } 
     catch (Exception Ex) 
     { 
      Val.Message(Ex.Message.ToString()); 
     } 
    } 

你应该试试这个...你会得到definetly成功...

0
private void PrintReport(string reportPath, string PrinterName) 
{ 
    CrystalDecisions.CrystalReports.Engine.ReportDocument rptDoc = 
         new CrystalDecisions.CrystalReports.Engine.ReportDocument(); 
    rptDoc.Load(reportPath); 

    CrystalDecisions.Shared.PageMargins objPageMargins; 
    objPageMargins = rptDoc.PrintOptions.PageMargins; 
    objPageMargins.bottomMargin = 100; 
    objPageMargins.leftMargin = 100; 
    objPageMargins.rightMargin = 100; 
    objPageMargins.topMargin = 100; 
    rptDoc.PrintOptions.ApplyPageMargins(objPageMargins); 
    //rptDoc.PrintOptions.PrinterName = PrinterName; 
    rptDoc.PrintToPrinter(1, false, 0, 0); 
} 

private void PrintToPrinter() 
{ 
    PrintReport(System.Windows.Forms.Application.StartupPath +"\\VCrpfrmprint.rpt","Send To OneNote 2010"); 
} 

rptDoc.PrintToPrinter方法打印报告的指定页在PrintOptions.PrinterName属性的帮助下选择打印机。
如果未选择打印机,将使用报告中指定的默认打印机。

我们正在使用PrintToPrinter方法:

public void PrintToPrinter (int nCopies , boolean collated , int startPage , int endPage); 

其中:

  • nCopies表示要打印的副本数量。
  • collated指示是否整理页面。
  • startPage表示要打印的第一页。
  • endPage指示要打印的最后一页。
相关问题