2

基本的に、理論的にはストアドプロシージャを呼び出し、返されたクエリをチャートにバインドするデータリーダーがあります。

これは、チャートにバインドしたいデータです:

ForecastDesc    Previous    Current Budget  Forecast 4  Forecast 7 
Period1 966025.79   1466872.95  1000000.00  0.00    0.00
Period2 1051175.09  1489785.15  1000000.00  0.00    0.00
Period3 1205352.26  1552806.49  1000000.00  0.00    0.00
Period4 1261483.84  1544562.06  1000000.00  50.00   0.00
Period5 1298918.58  1681396.55  1000000.00  45.00   0.00
Period6 1314396.68  1611695.58  10000000.00 50.50   0.00
Period7 1465150.48  1622354.24  1000000.00  50.50   123.00
Period8 1426084.73  1632609.46  1000000.00  50.50   0.00
Period9 1395144.09  370334.88   1000000.00  50.50   0.00
Period10    1347280.57  0.00    1000000.00  50.50   0.00
Period11    1374741.53  0.00    1000000.00  50.50   0.00
Period12    1331704.11  0.00    1000000.00  50.20   0.00
Period13    1367272.27  0.00    1000000.00  50.70   0.00

私のvbコードは次のとおりです。

    Protected Sub YearList_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles YearList.SelectedIndexChanged

    Chart1.Visible = True

    mySqlConn = New SqlConnection
    mySqlConn.ConnectionString = "Server=" + dbServerName + "; Database=" + dbCatalogName + "; Trusted_Connection=True;"


    pSql = New SqlCommand

    pSql.Connection = mySqlConn
    pSql.CommandType = CommandType.StoredProcedure
    pSql.CommandText = "dbo.[sp_DW_Transpose_BudgetForecast]"


    pSql.Parameters.Add("@seg1", SqlDbType.NVarChar)
    pSql.Parameters.Add("@seg2", SqlDbType.NVarChar)
    pSql.Parameters.Add("@seg3", SqlDbType.NVarChar)
    pSql.Parameters.Add("@year", SqlDbType.NVarChar)

    pSql.Parameters("@seg1").Value = Seg1.SelectedItem.Text
    pSql.Parameters("@seg2").Value = Seg2.SelectedItem.Text
    pSql.Parameters("@seg3").Value = Seg3.SelectedItem.Text
    pSql.Parameters("@year").Value = YearList.SelectedItem.Text

    pSql.Connection.Open()
    pReader = pSql.ExecuteReader(CommandBehavior.CloseConnection)

    While pReader.Read()
        Chart1.DataBindTable(pReader)
    End While

    pReader.Close()
    pReader = Nothing

    mySqlConn.Close()



End Sub

Web プログラムがチャートを作成する準備が整った時点で、次のエラーが発生します。

Server Error in '/' Application.

Specified method is not supported.

Description: An unhandled exception occurred during the execution of the current web          request. Please review the stack trace for more information about the error and where it   originated in the code. 

Exception Details: System.NotSupportedException: Specified method is not supported.

Source Error: 


Line 111:
Line 112:        While pReader.Read()
Line 113:            Chart1.DataBindTable(pReader)
Line 114:        End While
Line 115:


Stack Trace: 


[NotSupportedException: Specified method is not supported.]
 System.Data.Common.DbEnumerator.Reset() +65
 System.Web.UI.DataVisualization.Charting.ChartImage.GetDataSourceMemberNames(Object     dataSource, Boolean usedForYValue) +2363
 System.Web.UI.DataVisualization.Charting.ChartImage.DataBindTable(IEnumerable dataSource, String xField) +59
 System.Web.UI.DataVisualization.Charting.Chart.DataBindTable(IEnumerable dataSource) +36
 Forecasting.WebForm1.YearList_SelectedIndexChanged(Object sender, EventArgs e) in 
 System.Web.UI.WebControls.ListControl.OnSelectedIndexChanged(EventArgs e) +113
 System.Web.UI.WebControls.DropDownList.RaisePostDataChangedEvent() +143
     System.Web.UI.WebControls.DropDownList.System.Web.UI.IPostBackDataHandler.RaisePostDataChangedEvent() +10
 System.Web.UI.Page.RaiseChangedEvents() +135
 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean    includeStagesAfterAsyncPoint) +4867

 Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET    Version:4.0.30319.1

とにかく、Databindtable が私が使用すべき正しい方法なのか、それとも Databindcrosstable なのかはわかりません。私はこの問題を 4 日間見つめてきましたが、正しい方向に導くためにあなたの専門知識を求めています。

4

1 に答える 1

0

を呼び出し.DataBindTable()て渡していることが問題だと思いますがDataReader、DataReader が実装されていないIEnumerableため、メソッドがサポートされていないというエラーが発生します。DataTableデータをorにダンプしてみて、それDataSetをパラメータとして渡してください.DataBindTable()

Chart.DataBindTable メソッド

于 2012-09-20T18:27:30.983 に答える