0

我收到了一个数据库,它非常复杂,所以我很难理解它。我提出我会为所有者清理它,但看着大量的关系我可能会改变一些更糟的东西。但是,我希望为他们解决一个问题,属性是一个名为 LoanStatus 的字段;-Text -ComboBox -RowSource:“当前”;“返回”;“过期”

我遇到的问题是,每当您借出物品时,您在行中填写资产编号,系统会在该行中为您返回到期日,但问题是,您可以借出相同的项目在不同的表中(对不同的人)无限次,我想让 LoanStatus 字段在您尝试将其借出时显示“AlreadyLoaned”。再一次写这篇文章让我很头疼,但我希望你们能理解。感谢您的时间!

我正在使用 MS Access 2007

4

2 回答 2

1

根据数据规范化的原则,您不应该存储任何可以从数据库中的其他值计算出来的值。因此,它应该是从数据库中获取值的查询的一部分,而不是具有“已借出”值,以检查图书是否已借出。

它会是这样的:

Select Book.id as Name, count(Loan.id) as LoanedCount
from Book
left outer join Loan on Book.id = Loan.bookid
group by Book.id

这样做是归还每一本书,以及它拥有的每笔贷款的数量。左外连接意味着您为每本书/贷款组合获得一行,如果该书没有贷款,则为一行书籍/无贷款。然后,您将具有同一本书的所有行分组在一起,计算它有多少个非空贷款 ID 并返回该值。

于 2013-02-04T04:15:13.153 回答
0

如果您对规范化数据库具有管理访问权限,您将在相应表中为 LoanStatus 添加一个值“Occupado”。否则,有关您从中检索值的 ms access 数据库表的架构的更多信息将提供信息。除了必须将新值添加到数据库之外,您很可能还必须在“签出”过程中添加一些规则。

于 2013-02-04T04:27:12.180 回答