【发布时间】:2019-03-21 15:29:45
【问题描述】:
是否可以在组查询中编辑一个字段
我有一张关于支付的表格: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 必须是可编辑字段,TaxesDiif 必须是计算字段(到期税款和已付税款之间的差异)。
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 的结果复制到临时表中,以便能够在单个表报告中显示每个字段并能够编辑已付税款?
【问题讨论】:
-
将 Q1 的结果插入到临时表中,并将其与 Q2 连接起来,确实是一种可行的选择。特别是如果
DSum会影响性能。 -
很好奇,你想在那个结果集中更新什么?为什么不更新源表?
-
用户必须拥有所有报告数据才能更新 TaxesPaid 值(以避免一些输入错误)。仅在 tTaxesPaid 中允许输入值仍然是一种不友好的用户方法。