1

私がしたことは、フォームで reportViewer を作成するだけで、次のコードがあります。

        SqlConnection cn = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=G:\I.S\C#\billingSystem\Store.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True");


        private void Form1_Load()
        {
            runRptViewer();
            cn.Open();
        }

        private void rptGetDataset()
        {
            DataSet ds = new DataSet();
            ds.DataSetName = "dsNewDataSet";
            SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM NewBill", cn);
            ds.GetXmlSchema();
            da.Fill(ds);
            ds.WriteXmlSchema(@"G:\I.S\Testoooooooo\Testoooooooo\Dataset1.xsd");
            ds.WriteXml(@"G:\I.S\Testoooooooo\Testoooooooo\Dataset1.xml");
        }

        private DataTable getData()
        {
            DataSet dss = new DataSet();
            SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM NewBill", cn);
            da.Fill(dss);
            DataTable dt = dss.Tables["NewBill"];
            return dt;
        }

        private void runRptViewer()
        {
            this.reportViewer2.Reset();
            //this.ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report.rdlc");
            this.reportViewer2.LocalReport.ReportPath =(@"G:\I.S\Testoooooooo\Testoooooooo\Report1.rdlc");
            ReportDataSource rds = new ReportDataSource("dsNewDataSet_NewBill", getData());
            this.reportViewer2.LocalReport.DataSources.Clear();
            this.reportViewer2.LocalReport.DataSources.Add(rds);
            //this.reportViewer2.DataBind();
            this.reportViewer2.LocalReport.Refresh();
        }
    }

私は2つのreportViewerを持っていますreportViewer1は機能しますが、データベースのディレクトリが変更された場合は機能しません。そのため、別のreportViewerで試して、データベースのディレクトリが変更されても機能するようにしますストリング。

問題は、レポートに何も表示されないことです。コードに問題があると思います:

//this.ReportViewer1.LocalReport.ReportPath = Server.MapPath("Report.rdlc");

これは Windows フォームなので、サーバーはありません。次のように変更します。

this.reportViewer2.LocalReport.ReportPath =(@"G:\I.S\Testoooooooo\Testoooooooo\Report1.rdlc");

そしてこれはうまくいきません:

//this.reportViewer2.DataBind();

この 2 行を理解できません。Dataset1.xsd と Dataset1.xml を作成するという意味ですか、それとも単に編集するという意味ですか。ds.WriteXmlSchema(@"G:\IS\Testoooooooo\Testoooooooo\Dataset1.xsd"); ds.WriteXml(@"G:\IS\Testoooooooo\Testoooooooo\Dataset1.xml"); 可能であれば、すべてのものを作成することから素晴らしいコーディングまでの手順が必要です。

4

3 に答える 3

1

マイクロソフトはここでかなり良いウォークスルーを持っています...

http://blogs.msdn.com/b/sqlforum/archive/2011/04/28/sql-reporting-services-ssrs-bind-dynamic-dataset-to-your-local-report-with-reportviewer.aspx

于 2014-06-10T16:35:33.443 に答える
1

データセットはどのように作成しましたか? SQL ですか、それともメモリ内のオブジェクトからですか? データセットを作成していない場合は、レポートが正しく機能する前に作成する必要があります。これが役立つかもしれません: http://shrutikapoor-ubc.blogspot.com/2013/05/using-business-objects-in-report-viewer.html

于 2013-07-05T18:25:34.600 に答える
0

C# WinForm プロジェクトでレポート ビューアーを使用するには、次のコードをボタンまたは form_load に追加します。

string strConnectionString = "Data Source=(local);Initial Catalog=Projects_DB;Integrated Security=True";
DataSet ds = new DataSet();
SqlDataAdapter da = new SqlDataAdapter();
SqlCommand cmd = new SqlCommand("sp_GetProject " + "'0660CAD6-6F1A-4D19-A1FD-17BF3655AC98'");
cmd.CommandType = CommandType.Text;
cmd.Connection = new SqlConnection (strConnectionString);
da.SelectCommand = cmd;

da.Fill(ds,"DataSet1");

reportViewer1.ProcessingMode = ProcessingMode.Local;
reportViewer1.LocalReport.DataSources.Clear();
reportViewer1.LocalReport.DataSources.Add(new ReportDataSource("DataSet1", ds.Tables[0]));
reportViewer1.LocalReport.Refresh();
reportViewer1.RefreshReport();

@ProjectID パラメータを受け入れるストアド プロシージャがあるとします。cmd.CommandType = CommandType.Textこれらのパラメータを sql コマンドとともに渡す場合は、 を設定する必要があります。ただし、パラメーターを渡したくない場合は、commandType を に変更してくださいcmd.CommandType = CommandType.StoredProcedure

以下は、この例で使用されるストアド プロシージャです。

CREATE PROC [dbo].[sp_GetProject]
    @ProjectID      nvarchar(50)=NULL

AS
BEGIN

   SELECT ProjectID, ProjectName FROM Projects
    WHERE 
    (@ProjectID IS NULL) OR (ProjectID = @ProjectID)

END
于 2013-11-07T09:10:54.913 に答える