2013-02-04 71 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訪問數據庫表架構的更多信息將會提供信息。除了必須將新值添加到數據庫之外,您最有可能必須在「檢出」過程中添加一些規則。