我收到一个数据库,它非常复杂,所以我很难理解它。我主动提出我会为店主清理干净,但看着大量的关系,我可能会把一些事情变得更糟。但是有一个问题我想解决,有一个名为LoanStatus属性的字段;-Text -ComboBox -RowSource:“当前”;“已返回”;“过期”
我遇到的问题是,每当您借出一个项目时,您在行中填写资产编号,系统将在该行中为您返回到期日。但问题是,您可以在不同的表中无限次地借出同一项目(给不同的人),我希望每当您尝试借出已经借出的项目时,LoanStatus字段都会显示"AlreadyLoaned“。再说一次,写这篇文章让我有点头疼,但我希望你们能理解。谢谢您抽时间见我!
即时消息使用MS Access 2007
发布于 2013-02-04 12:15:13
根据数据规范化的原则,您不应该存储可以从数据库中的其他值计算出的任何值。因此,它应该是从数据库获取值的查询的一部分,而不是具有“已借出”的值,以检查该书是否已被借出。
它应该是这样的:
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它所做的是返回每一本书,以及它所拥有的每一次借阅的计数。左外部连接表示每个图书/贷款组合对应一行,如果该图书没有贷款,还会有一行图书/无贷款。然后,将具有相同图书的所有行分组在一起,计算有多少非空贷款ids并返回该值。
发布于 2013-02-04 12:27:12
如果您拥有对规范化数据库的管理访问权限,那么您应该在适当的表中为LoanStatus添加一个值"Occupado“。否则,有关从中检索值的ms access数据库表的模式的更多信息将是有用的。除了必须将新值添加到数据库之外,您很可能还需要在“签出”过程中添加一些规则。
https://stackoverflow.com/questions/14680205
复制相似问题