я получаю сообщение об ошибке при попытке выполнить запрос в доступе через C # - PullRequest
1 голос
/ 18 июля 2010

у меня есть этот запрос:

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 ]

1 голос
/ 18 июля 2010

Что касается 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;
0 голосов
/ 18 июля 2010

Я предлагаю вместо подсчета значений

Tot и TotAbs

непосредственно в запросе.

Лучше считать их в коде, поскольку мы можем избежать любой проблемы, связанной с порядком выполнения запроса в предложении SELECT.

Следовательно, ваш запрос будет выглядеть так:

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

Cheers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...