2016-07-15 17 views
2

Ich versuche, ein SP-Ergebnis usign JSon-Methode wie in diesem Tutorial http://prashantjayle.blogspot.com/2015/05/chartjs-with-aspnet-mvc-5.html zurückgeben, aber wenn ich es ausführen, wird das Diagramm, das ich brauche, nicht angezeigt die Aussicht.System.ArgumentException: Spalte 'COLUMN_NAME' gehört nicht zu Tabelle

In meinem Controller Ich habe diesen Code:

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); 
    } 

und die Fehlerpunkte auf diese Codezeile:

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

TOTAL_AMT_PER ITEM ist die Spalte ich in meinem SP nennen. Das ist mein SP Abfrage

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

Was mache ich falsch? Hoffe jemand kann mir dabei helfen. Vielen Dank!

Antwort

1

Versuchen Sie, die unter Abfrage

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 

Sie einen Alias-Namen für die Summe der Fall Ausdruck verpasst haben, können Sie versuchen, Ihre ursprüngliche Abfrage ausgeführt wird und sehen, ob Ergebnismenge den Spaltennamen hat, was Sie erwarten zu machen sicher.

+0

danke, mein Herr! Das hat mein Problem gelöst! –

Verwandte Themen