Как редактировать поле в составленном запросе - PullRequest
1 голос
/ 21 марта 2019

Возможно ли редактировать одно поле в групповом запросе

У меня есть одна таблица с оплатой: tPay

+-------------+--------------+---------------+---------------+
| idPay       | PayDate      | Pay           | Taxes         |
+-------------+--------------+---------------+---------------+
| 1           | 2018-01-12   | 1000,01       | 50,01         |
| 2           | 2018-01-26   | 1500,01       | 75,01         |
| 3           | 2018-02-04   | 1200,20       | 65,14         |
+-------------+--------------+---------------+---------------+

из которого я сделал запрос по группам за месяц: qryPay_groupByMonth (QRY # 01)

SELECT DateSerial(Year([PayDate]),Month([PayDate]),1) AS Month, 
       Sum(tPay.Pay) AS PayOfMonth, 
       Sum(tPaie.Taxes) AS TaxesOfMonth
FROM tPay
GROUP BY DateSerial(Year([DateFinPeriode]),Month([DateFinPeriode]),1);

+-------------+--------------+---------------+
| Month       | PayOfMonth   | TaxesofMonth  | 
+-------------+--------------+---------------+
| 2018-01     | 2500.02      | 125.02        | 
| 2018-02     | 1200.20      | 64.14         | 
+-------------+--------------+---------------+

Я создаю таблицу tTaxesPaid следующим образом, чтобы объединиться с предыдущим запросом

+---------+-------------+
| Month   | TaxesPaid   |
+---------+-------------+
| 2018-01 |  125.02     | 
| 2018-02 |   62.04     | 
+---------+-------------+

Я получаю следующий запрос (QRY # 02), где TaxesPaid должно быть редактируемым полем, а TaxesDi - расчетным полем (разница между подлежащим уплате налогом и уплаченным налогом).

SELECT  tTaxesPaid.Month,  
    tTaxesPaid.TaxesPaid, 
    qryPay_groupByMonth.TaxesOfMonth.TaxesOfMonth, 
    Round([TaxesPaid]-[TaxesOfMonth],2) AS TaxesDiff
FROM tTaxesPaid LEFT JOIN qryPay_groupByMonth ON tTaxesPaid.Month = qryPay_groupByMonth.Month;

+---------+-----------+------------+----------------------+-----------------+
| Month   | Pay       | Taxes      | TaxesPaid (editable) |TaxesDiff (calc) |
+---------+-----------+------------+----------------------+-----------------+
| 2018-01 | 2500.02   | 125.02     |  125.02              |                 |
| 2018-02 | 1200.20   | 64.14      |  62.04               | 2.10            |
+---------+-----------+------------+----------------------+-----------------+

Я всегда получаю сообщение об ошибке при попытке изменить налоги в QRY # 02: невозможно обновить набор записей. Я пытаюсь поместить каждый тип записи в dyn (глобальное обновление), но он остается недоступным для редактирования.

У кого-нибудь есть идея решить эту проблему?

Нужно ли мне копировать результат QRY # 01 во временную таблицу, чтобы иметь возможность отображать каждое поле в отчете за одну таблицу и редактировать уплаченные налоги?

1 Ответ

0 голосов
/ 22 марта 2019

Значения нельзя редактировать, поскольку компонент запроса (в частности, ваш qryPay_groupByMonth) использует агрегирование. В MS Access набор записей, возвращаемый любым запросом, который использует агрегацию в какой-то момент своего выполнения, не подлежит обновлению.

Этого можно избежать, используя функцию агрегирования домена (например, DSum) для вычисления ежемесячных итогов, так как это оценивается вне выполнения запроса, что означает, что запрос остается обновляемым.

В качестве альтернативы вы можете вывести агрегированные значения во временную таблицу (либо используя запрос на добавление [insert into TempTable select ... from ...] после первой очистки содержимого таблицы, либо запрос make table [select ... into TempTable from ...] после удаления таблицы, если она уже существует [drop TempTable]); такую ​​временную таблицу можно затем присоединить к вашему неагрегированному запросу, чтобы запрос оставался обновляемым.

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