2

私は SetParametr しようとしている次のコードを使用しています:

    var report = new ReportParameter[1];
    report[0] = new ReportParameter("MyName", "Raha");
    var reportDataSource1 = new ReportDataSource { Name = "WpfApplication17_User", Value = _users };


    _reportViewer.LocalReport.DataSources.Add(reportDataSource1);
    _reportViewer.ServerReport.SetParameters(report);
    _reportViewer.LocalReport.ReportPath = "../../Report1.rdlc";

    _reportViewer.RefreshReport();

エラー : レポート定義のソースが指定されていません

なぜ間違っているのですか?

レポート パラメータを作成しました。パラメータ名は「MyName」です

アップデート :

私は次のコードを使用しています:

    //var report = new ReportParameter[1];
    //report[0] = new ReportParameter("MyName", "Raha");


    var reportDataSource1 = new ReportDataSource { Name = "WpfApplication17_User", Value = _users };

    string exeFolder = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);
   
    _reportViewer.LocalReport.ReportPath =exeFolder + @"\Reports\Report1.rdlc";


    _reportViewer.LocalReport.DataSources.Add(reportDataSource1);

    //_reportViewer.ServerReport.SetParameters(report);

    _reportViewer.RefreshReport();

データがレポートに表示されました。

しかし、私は次のコードを使用しています:

   var report = new ReportParameter[1];
            report[0] = new ReportParameter("MyName", "Raha");


            var reportDataSource1 = new ReportDataSource { Name = "WpfApplication17_User", Value = _users };

            string exeFolder = System.IO.Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName);

            _reportViewer.LocalReport.ReportPath = exeFolder + @"\Reports\Report1.rdlc";


            _reportViewer.LocalReport.DataSources.Add(reportDataSource1);

            _reportViewer.ServerReport.SetParameters(report);//error

            _reportViewer.RefreshReport();

error as : レポート定義のソースが指定されていません

4

6 に答える 6

9

ReportParameter を

_reportViewer.LocalReport.ReportPath = "../../Report1.rdlc";

ここにReportParameterを書きます

于 2016-09-15T17:16:05.943 に答える
7

私は同じエラーで立ち往生していることに気付きました。その理由は実際には非常に単純です。レポート定義は、パラメーターの前に最初に設定する必要があります。このようにして、LocalReportそれらが本当に必須であるかどうかを確認し、最終的に例外をスローすることができます。

以下のコードは機能するはずです。

_reportViewer.LocalReport.DataSources.Add(reportDataSource1);
_reportViewer.LocalReport.ReportPath = "../../Report1.rdlc";
_reportViewer.ServerReport.SetParameters(report);
于 2016-07-27T19:28:03.607 に答える
3

エラーはパラメータとは関係ありません。エラーはに関連していReportPathます。レポート パスの設定に関するこの他の SO の質問を参照してください。アプリケーションの実行時に、指定した相対パスが正しいかどうかを確認してください。そのパスはソース コードからの相対パスですか? ファイルを探している場所を確認したい場合は、コードを追加してその相対パス ( Path.GetFullPath ) を解決し、それが指している場所を確認できます。rdlcファイルがそのフォルダーにあることを確認してください。

編集:
更新された質問に基づいて、レポートが実際に見つかっていることを確認します。あなたのコードを詳しく調べました。のパラメータを設定してServerReportいますが、 にレポートをロードしていますLocalReport。でパラメータを設定しようとしていますLocalReport

_reportViewer.LocalReport.SetParameters(report);
于 2012-10-15T20:14:45.070 に答える
1

今日も同じ問題がありました。私の場合は、「コピーと貼り付け」の問題が原因です。以下のコードで ServerReport を LocalReport に置き換えるだけで問題は解決しました。変化する

_reportViewer.LocalReport.DataSources.Add(reportDataSource1);

_reportViewer.ServerReport.SetParameters(report);
于 2016-08-17T20:24:44.593 に答える
1

次から変更する必要があります。

_reportViewer.ServerReport.SetParameters(report); //error

に:

_reportViewer.LocalReport.SetParameters(report);
于 2017-06-28T22:19:33.153 に答える
0

レポートが埋め込みリソースである可能性があるため、レポート定義でパラメーターを設定しようとすると、_reportViewer.ServerReport.SetParameters(report);//errorまだ読み込まれていません。

したがって、レポートが埋め込みリソースの場合はreport.LoadReportDefinition(stream); // Get report definition、レポート パラメータを設定する前に呼び出す必要があります。

すなわち: 以下は、LocalReport から PDF バイト配列を返します。

public byte[] ProcessReportToPDFBytes(List<ReportDataSource> rds, Stream stream, string fileName, string outputType, SqlParameter[] rptParameters)
    {
      // Variables 
      Warning[] warnings;
      string[] streamIds;
      string mimeType = string.Empty;
      string encoding = string.Empty;
      string extension = string.Empty;

    using (LocalReport report = new LocalReport())
    {
            // Setup the report viewer object and get the array of bytes 
            report.EnableHyperlinks = true;
            report.EnableExternalImages = true;
            report.SetBasePermissionsForSandboxAppDomain(new System.Security.PermissionSet(System.Security.Permissions.PermissionState.Unrestricted));

            report.LoadReportDefinition(stream); // Get report definition
            // **** Set the Report Parameters AFTER the LoadReportDefinition ****
            if (rptParameters != null)
            {
              foreach (SqlParameter param in rptParameters)
              {
                report.SetParameters(new ReportParameter(param.ParameterName, param.Value == null ? "" : param.Value.ToString(), false));
              }
            }
            foreach (ReportDataSource rds1 in rds)
            {
              report.DataSources.Add(rds1); // Add datasource here 
            }

            // Render the PDF from the local report
            return report.Render("PDF", null, out mimeType, out encoding, out extension, out streamIds, out warnings);
    }
}

これが、この同様のエラーで他の人を助けることを願っています.

于 2014-03-13T04:58:02.880 に答える