2013-02-04 52 views
0

我已经收到一个数据库,它非常复杂,所以很难让我的头靠近它。我提出我会为主人清理它,但看看大量的关系,我可能会改变一些事情。然而,我想为他们修复一个问题,那就是属性名为LoanStatus的字段; - 文本 -ComboBox -RowSource:“当前”,“返回”,“过期”数据库字段操作

我有是当你借出的项目,你的行中填入资产编号的问题和系统会在该行返回一个到期日期,但问题是,您可以在不同的表格(对不同的人)中无限次地借出相同的项目,我想让LoanStatus字段显示“AlreadyLoaned “每当你试图在贷款已经借出时就将其出借。我再次通过写这个让我头疼,但我希望你们能理解它。感谢您的时间!

即时通讯使用的MS Access 2007

回答

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并返回该值。

+0

感谢家伙选择查询帮助 – Jube

0

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