none
請問如何點選Calendar物件的日期,來控制ReportViewer內的報表內容? RRS feed

  • 問題

  • 各位高手您好:

    我是ASP.net 新手,如題,我打算用VB語法,設計一個網頁,利用點選Calendar的指定日期,來控制ReportViewer報表內的資料內容。
    我已經做到呈現所有日期的報表,上千頁,但是不會控制特定日期的單一報表,並想用Calendar物件來點選控制資料日期。

    敬請指教!
    2009年4月19日 上午 10:10

解答

  • 提供一些作法供您參考 :
    1. 在畫面上拖拉一個Calendar & ReportViewer

    2. 設計新報表


    3. 設定資料來源:


    4. 設定連線字串名稱 :


    5. 選擇要存取的Table:


    6. 列出所選擇的Table欄位 :


    7. 選擇layout:


    8. 選擇要秀的欄位:


    9. 選擇顯示格式:


    10. 設定Style:


    11. 設定完成後,您會發現您在APP_CODE資料夾中多了一個.xsd檔案


    12. 在xsd中新增一個查詢語法:


    13.  填入所需的語法:


    14.新增的查詢語法:


    15. 去畫面上變更ObjectdataSource所選擇的查詢語法 :





    16. 設定參數來源 :



    17. 在程式碼中更新報表:

      Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged

            ReportViewer1.LocalReport.Refresh()

        End Sub



    然後當您選擇日期時, ReportViewer就會隨著所選日期不同而做變更.



    以上供您參考.



    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    • 已標示為解答 kn2351 2009年4月21日 上午 11:43
    2009年4月21日 上午 09:38

所有回覆

  • kn2351:
              以Calendar所點選的日期當成SQL Statement中Select 的條件式就行了吧.
              主要是要以SQL 的Convert 將資料欄位中的日期時間Convert成只有日期就好了.
              
    2009年4月19日 下午 01:43
  • Bill Chung 高手您好:

    請教控制資料來源VB語法是寫在ReportViewer的ASPX檔案內?還是RDLC檔案?還是Dataset.xsd內?  感恩!

    2009年4月20日 上午 12:44
  • 在DataSet.xsd中寫一段查詢語法, 其中設定查詢參數, 然後在畫面上的ObjectDataSource去選擇這個查詢語法,
    此時就可以選擇Calendat控制項選擇的值當作查詢參數的來源.
    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    2009年4月20日 上午 01:35
  • HI,

    您可以這樣寫:

    Dim strConn As string = "資料庫連線資訊"
    Dim strSQL As string = "Select * from Orders where OrderDate=@OrderDate"

    Dim da As New SqlDataAdapter(strSQL, strConn)
    da.SelectCommand.Parameters.AddWithValue("@OrderDate", Calendar1.SelectedDate)

    Dim ds As new DataSet()
    da.Fill(ds)

    GridView1.DataSource = ds.Tables(0)
    GridView1.DataBind()

    記得改一下SQL敘述即可
    2009年4月20日 上午 01:39
  • 你可以參考這裡應該就能改出來了
    http://www.dotblogs.com.tw/fbint289/archive/2008/07/22/4693.aspx
    把Page_Load那段放到Calendar_SelectionChanged裡再改一下SQLCommant的where判斷
    2009年4月20日 上午 06:28
  • U.F.O 高手您好:

    範例VB語法中之reportViewer1.LocalReport.DataSources.Add(New ReportDataSource("AdventureWorksDataSet_Employee", dt)),其中ReportDataSource無法辨識,請問是否還需Import 什麼?  感恩!
    2009年4月21日 上午 02:27
  • this 高手您好:

    我的RDLC 或 reportViewer 檔案內並無GridView物件,請問要如何修改,可以立即更新 ReportViewer資料內容?
    即更新 ReportViewer的Datasource的設定? 感恩!
    2009年4月21日 上午 02:39
  • kn2351:
       一般我寫Report的習慣是自己產生一個DataTable變成Reportviewer的DataSource.
       你可參考一下[關於建立本機報表的問題] ,在那篇討論中,講到'前面查詢資料庫,得到一個myTable的dataTable物件 
       通常我會把條件放在此查詢資料庫時間,也就是說,我得到的datatable已經是指定條件查詢的結果了.
       Web Form 上的ReportDataSource類別位於 Microsoft.Reporting.WebForms命名空間
    2009年4月21日 上午 02:55
  • HI,

    如果您的Calendar和ReportView放在同一個網頁上, 您可以:

    1) ReportViewer顯示的RDLC要執行帶參數的SQL敘述, 例如:Select * from Orders where OrderDate=@OrderDate
    2) 在網頁的Page_Load中加入:
            if (!IsPostBack)
            {
                Calendar1.SelectedDate = Calendar1.TodaysDate;
                ObjectDataSource1.SelectParameters.Add("OrderDate", DbType.DateTime, Calendar1.SelectedDate.ToString());
            }
    3) 處理Calendar的SelectedIndexChange事件
            ObjectDataSource1.SelectParameters["OrderDate"].DefaultValue=Calendar1.SelectedDate.ToString();
            ReportViewer1.LocalReport.Refresh();
    2009年4月21日 上午 03:27
  • this 高手您好:

    依照您的方法,我覺得快要接近完成了,但是RDLC執行帶參數的SQL敘述, 例如:Select * from Orders where OrderDate=@OrderDate
    請問要如何作? 是在RDLC的報表屬性內之程式碼頁面之自定程式碼框框內?(試過無效) ,我甚至改成Select * from Orders where OrderDate=today() 或
    Select * from Orders where OrderDate='2009/4/21',ReportViewer還是撈到所有筆數的報表。

    另 ObjectDataSource1.SelectParameters["OrderDate"].DefaultValue=Calendar1.SelectedDate.ToString();
    以VB語法是否要改成 ObjectDataSource1.SelectParameters("OrderDate").DefaultValue=Calendar1.SelectedDate.ToString()


     感恩!

    2009年4月21日 上午 08:26
  • 提供一些作法供您參考 :
    1. 在畫面上拖拉一個Calendar & ReportViewer

    2. 設計新報表


    3. 設定資料來源:


    4. 設定連線字串名稱 :


    5. 選擇要存取的Table:


    6. 列出所選擇的Table欄位 :


    7. 選擇layout:


    8. 選擇要秀的欄位:


    9. 選擇顯示格式:


    10. 設定Style:


    11. 設定完成後,您會發現您在APP_CODE資料夾中多了一個.xsd檔案


    12. 在xsd中新增一個查詢語法:


    13.  填入所需的語法:


    14.新增的查詢語法:


    15. 去畫面上變更ObjectdataSource所選擇的查詢語法 :





    16. 設定參數來源 :



    17. 在程式碼中更新報表:

      Protected Sub Calendar1_SelectionChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles Calendar1.SelectionChanged

            ReportViewer1.LocalReport.Refresh()

        End Sub



    然後當您選擇日期時, ReportViewer就會隨著所選日期不同而做變更.



    以上供您參考.



    微軟技術支援中心(CSS) - http://twitter.com/msdn_taiwan
    • 已標示為解答 kn2351 2009年4月21日 上午 11:43
    2009年4月21日 上午 09:38
  • Lolota Lee高手您好:

    應該是您看不下去了,最後以圖解說明,很慚愧,小弟終於豁然開朗,解決了!感恩 !

    也謝謝所有指教的高手,在此受小弟一拜!
    2009年4月21日 上午 11:44