无法通过C#运行MS Access查询

时间:2015-07-15 07:21:55

标签: c# ms-access

我在MS Access中运行此查询非常好!

SELECT 
    BK_LEVEL9.Aitur AS Aitur, 
    Sum(BK_LEVEL9.M_NewQty) AS M_NewQty, 
    Sum(BK_LEVEL9.ErrorCount) AS ErrorCount, 
    (IIf([M_NewQty]<>0,Round(([ErrorCount]*100)/[M_NewQty],2),0)) AS ErrorProcc
FROM 
    BK_LEVEL9
GROUP BY 
    BK_LEVEL9.Aitur;

在我的C#程序中,我尝试像这样运行此查询:

SQL = "SELECT Aitur,M_NewQty,ErrorCount,ErrorProcc from MyQUERY";
dsWorkKabat = new DataSet();
adp = new OleDbDataAdapter(SQL, Conn);
adp.Fill(dsWorkKabat, "MyQUERY");
adp.Dispose();

我收到了这个错误:

  

您尝试执行的查询不包含指定的表达式'IIf(Not [M_NewQty] = 0,Round([ErrorCount] * 100 / [M_NewQty],2),0)'作为聚合函数的一部分

可能是什么问题?

由于

1 个答案:

答案 0 :(得分:1)

对于几乎每个DBMS(MySQL是我唯一知道的例外,但也可能有其他例外),SELECT中未聚合的每一列都需要在GROUP BY子句中。对于您的查询,您需要将其分组:

GROUP BY 
    BK_LEVEL9.Aitur, IIf([M_NewQty]<>0,Round(([ErrorCount]*100)/[M_NewQty],2),0);