如何解决MS Access 中的多表查询不可更新
这是我的第一篇文章,如果我无法提供足够的信息,请多多包涵。
我正在尝试将一个查询放在一起,该查询将用作项目费用数据输入表单上的子表单。作为查询的一部分,我希望 Access 提取正确的税率,以便在查询的计算字段中正确计算 PST 和 GST。我有一个由 5 个表组成的查询:
- tblProjectExpenseLineItems(PK:ExpenseLineItemID,FK:ProjectExpenseID)
- tblProjectExpenses(PK:ProjectExpenseID,FK:ProjectNoID)
- tblProjects(PK:ProjectNoID,FK:ClientID)
- tblClientList(PK:客户端 ID)
- tblTaxRate
查询设计如下:qryProjectExpensesLineItemsExtended Query Design
图片没有显示,但 PSTTaxRate 字段设置为 [tblTaxRate]![TaxRate],PST 字段只是费用行项目的 PST 计算。
我手动将 [tblClientList].[Province] 加入到 [tblTaxRate].[TaxJurisdiction]。这些在数据库关系中不相关,因为这两个字段都不是主键,而且我得到了“不确定”关系类型。我已检查并确认这些字段中的值实际上相同,因此在我运行查询时会显示结果。
查询字段主要来自 tblProjectsExpensesLineItems 表,因为这是我想通过子表单更新的表(我已经尝试添加不同的 PK 以查看是否会改变任何东西,但没有这样的运气)。我有其他四个表的唯一原因是获取 [tblClientList].[Province] 字段,以便我可以获取客户的位置并知道要收取哪种税。我住的地方最近更改了几次 PST,因此我使用 [ExpenseDate] 字段进一步过滤查询,以找到适合 [tblTaxRate].[StartDate] 和 [tblTaxRate].[EndDate] 之间的税率字段。
我已检查/阅读的内容:
- 我已检查表关系是否已设置,是否与主键相关,并已选中“强制参照完整性”。
- 我尝试从查询中删除 tblTaxRate,因为它没有实际关系。查询仍然不可更新,当我运行查询时,Access 会提示我输入 TaxRate、StartDate 和 EndDate 字段
- 我在 Why is my query not updateable? 上找到了一篇非常详细的帖子,其中介绍了查询不可更新的原因。我对 Access 很陌生,所以我能够排除其中的大部分,但其中一些我不太明白(也许与一对多和多对一关系有关?)
- 删除除我要更新的表之外的所有表。这当然使查询可更新,但 Access 会提示我输入与尝试查找税率相关的所有字段。
我认为也许一个简单的方法是手动输入税率,但数据库正在用于开票,所以我试图消除用户输入错误的可能性。
我还认为,如果我使用表单控件来完成繁重的工作会更容易,但税收计算会以多种形式显示,所以我希望将计算保持在查询级别,这样我就不必保留为每个表单编写计算,而只是引用相同的查询。
我完全不知所措。我有查询正确响应,但我不能做任何数据输入,这是查询的唯一目的!非常感谢任何帮助!
斯科特
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。