5

Crystalレポートを印刷するためにこのコードを書きました..しかし、エラーが発生しました

「パラメーターがありません」...

ReportDocument rdoc = new ReportDocument();
rdoc .Load (Application.StartupPath +"\\"+@"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を経由せずに直接印刷する方法は?

4

7 に答える 7

1

プリンターに直接印刷しても問題は解決しません。Crystal Report では、パラメーターを正しく設定する必要がありますが、何らかの理由でそうではありません。

于 2015-08-28T18:53:03.550 に答える
1

Crystal Reportを直接印刷するには、 PrintToPrinterメソッドを使用してください。

http://msdn.microsoft.com/en-us/library/aa691452%28VS.71%29.aspx

http://www.nullskull.com/q/10110521/print-crystal-report-without-viewing.aspx

于 2013-06-29T06:18:53.290 に答える
0
reportname report1=new reportname(); 
report1.PrintOptions.PaperOrientation = PaperOrientation.Portrait;
report1.PrintOptions.PaperSize = PaperSize.PaperA4;
report1.PrintToPrinter(1, false, 0, 15);

これらのコードを関数(パラメーター)で使用します

于 2013-06-29T10:16:06.453 に答える
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印刷する最後のページを示します。
于 2016-07-08T18:33:57.113 に答える