-6

GridView コントロールに DataBind しようとしていますが、一貫して失敗します。

次のコードが与えられた場合 (読みやすくするために sql を複数行に展開):

protected void Page_Load(object sender, EventArgs e)
{

string dsn = "foo";
string sql = "SELECT * FROM (SELECT F.Project AS 'Project Number', F.Account AS   
             'Account', F.Pd AS Period, F.Incurred AS Totals, C.Project AS 
             'Project Name' FROM Ultron.Final F INNER JOIN Ultron.Custom  
              C ON F.Project = C.Project WHERE F.Project LIKE '61000.003%' AND 
              F.Account NOT LIKE '%-01' AND F.Fy = YEAR(GetDate()) ) Budget PIVOT 
              (SUM(Totals) FOR Period in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],
              [11],[12]) AS PivotTable";
using (SqlConnection conn = new SqlConnection(dsn))
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
    conn.Open();
    SqlDataReader reader = cmd.ExecuteReader();
    testGrid.DataSource = reader;
    testGrid.DataBind();
}
}    

エラーはクエリの括弧と関係があると確信していますが、クエリが機能するには括弧が必要です。SSMS でテストすると、クエリは問題なく通過します。

コードが失敗しないようにこれを再構築するにはどうすればよいですか?

編集

As PivotTableSQLクエリの最後まで欠落していました。それは今動作します。申し訳ありませんが、これは無実のタイプミスでした。回答してくれたすべての人に感謝します。

4

3 に答える 3

0

)SQL クエリに最後がありません。これを試して:

protected void Page_Load(object sender, EventArgs e)
{    
    string dsn = "foo";
    string sql = "SELECT * FROM (SELECT F.Project AS 'Project Number', F.Account AS   
                 'Account', F.Pd AS Period, F.Incurred AS Totals, C.Project AS 
                 'Project Name' FROM Ultron.Final F INNER JOIN Ultron.Custom  
                  C ON F.Project = C.Project WHERE F.Project LIKE '61000.003%' AND 
                  F.Account NOT LIKE '%-01' AND F.Fy = YEAR(GetDate()) ) BudgetPIVOT  
                  (SUM(Totals) FOR Period in ([1],[2],[3],[4],[5],[6],[7],[8],[9],[10],
                  [11],[12]))";

    using (SqlConnection conn = new SqlConnection(dsn))
    using (SqlCommand cmd = new SqlCommand(sql, conn))
    {
        conn.Open();
        SqlDataReader reader = cmd.ExecuteReader();
        testGrid.DataSource = reader;
        testGrid.DataBind();
    }
}    
于 2013-06-28T17:26:23.220 に答える