当我尝试通过C#访问运行查询时出现错误

时间:2010-07-18 10:59:28

标签: c# ms-access

我有这个问题:

SELECT DO3Tbl.CodeDip, DO3Tbl.BarcodeD, Sum(DO3Tbl.Qty) AS Qty,
       Max(DO3Tbl.Mly) AS Mly, [Qty]-[Mly] AS Tot, ABS(Tot) AS TotAbs

当我在访问其工作中运行此查询时非常好

但是当我用C#代码运行这个查询时:

SQL =     SELECT DO3Tbl.CodeDip, DO3Tbl.BarcodeD, Sum(DO3Tbl.Qty) AS Qty,
          Max(DO3Tbl.Mly) AS Mly, [Qty]-[Mly] AS Tot, ABS(Tot) AS TotAbs 
Cmd = new OleDbCommand(SQL, Conn);
            Cmd.ExecuteNonQuery();
            Cmd.Dispose();

我收到此错误:

  

您尝试执行的查询不包含指定表达式'[Qty] - [Mly]'作为聚合函数的一部分。

2 个答案:

答案 0 :(得分:1)

就Access而言,查询存在很多错误,例如,您不是从任何表中进行选择,也不能使用与字段名称相同的别名。怎么样:

SELECT DO3Tbl.CodeDip, DO3Tbl.BarcodeD, Sum(DO3Tbl.Qty) AS SumOfQty, Max(DO3Tbl.Mly) AS MaxOfMly, Sum([Qty]-[Mly]) AS Tot, Abs(Tot) AS TotAbs
FROM DO3Tbl
GROUP BY DO3Tbl.CodeDip, DO3Tbl.BarcodeD;

答案 1 :(得分:0)

我建议不要计算

  

托特   和   TotAbs

直接在查询中的值。

最好在代码中计算它们,因为我们能够避免与SELECT子句中的查询执行顺序相关的任何问题。

因此您的查询将是这样的:

SELECT DO3Tbl.CodeDip, DO3Tbl.BarcodeD, Sum(DO3Tbl.Qty) AS Qty,
       Max(DO3Tbl.Mly) AS Mly

干杯。