2016-07-15 20 views
2

私はこのチュートリアルのようにJSonメソッドを使用しようとしています。http://prashantjayle.blogspot.com/2015/05/chartjs-with-aspnet-mvc-5.htmlですが、実行すると、必要なチャートが表示されません景色。私のコントローラでSystem.ArgumentException: 'COLUMN_NAME'列がテーブルに属していない

、私はこのコードを持っている:

public JsonResult GetData() 
    { 
     DataTable dtTable = new DataTable(); 
     List<string> lstSales = new List<string>(); 
     List<string> lstProduct = new List<string>(); 


     string strQuery = "SP_SALES_PER_PRODUCT"; 

     SqlConnection con = new SqlConnection (ConfigurationManager.ConnectionStrings["ebms_connection"].ToString()); 
     SqlCommand cmd = new SqlCommand(strQuery, con); 
     cmd.CommandType = CommandType.StoredProcedure; 
     SqlDataAdapter da = new SqlDataAdapter(cmd); 
     da.Fill(dtTable); 


     foreach(DataRow row in dtTable.Rows) 
     { 
      lstSales.Add(row["TOTAL_AMT_PER_ITEM"].ToString()); 
      lstProduct.Add(row["PRODUCT_CODE"].ToString()); 
     } 


     var BarChart = new 
     { 

      SALES = lstSales, 
      PRODUCTS = lstProduct 
     }; 
     return Json (BarChart, JsonRequestBehavior.AllowGet); 
    } 

そして、このコード行にエラーポイント:

lstSales.Add(row["TOTAL_AMT_PER_ITEM"].ToString()); 

TOTAL_AMT_PERのITEMは、私は私のSPで呼び出す列です。 これは私が間違って何をやっている私のSPクエリ

SELECT p.PRODUCT_CODE, SUM(case when p.PRODUCT_ID=od.PRODUCT_ID and od.ORDER_ID=o.ORDER_ID then od.TOTAL_AMT_PER_ITEM else 0 end) 
 
FROM [ORDER] o 
 
INNER JOIN ORDER_DETAILS od 
 
ON o.ORDER_ID = od.ORDER_ID 
 
INNER JOIN PRODUCT p 
 
ON od.PRODUCT_ID=p.PRODUCT_ID 
 
GROUP BY p.PRODUCT_CODE

のですか?誰かが私を助けてくれることを願っています。ありがとうございました!

答えて

1

あなたがあなたの元のクエリを実行してみることができ、結果セットはあなたが作ることを期待しているか、列名を持っているかどうかを確認することができ、case式の合計の別名を逃した以下のクエリ

SELECT p.PRODUCT_CODE, SUM(case when p.PRODUCT_ID=od.PRODUCT_ID and od.ORDER_ID=o.ORDER_ID then od.TOTAL_AMT_PER_ITEM else 0 end) 
as TOTAL_AMT_PER_ITEM 
FROM [ORDER] o 
INNER JOIN ORDER_DETAILS od 
ON o.ORDER_ID = od.ORDER_ID 
INNER JOIN PRODUCT p 
ON od.PRODUCT_ID=p.PRODUCT_ID 
GROUP BY p.PRODUCT_CODE 

をお試しください確かに。

+0

ありがとうございました!これは私の問題を解決しました! –

関連する問題