0

私はデータベースを受け取りました、それは非常に複雑なので、それについて頭を悩ますのは難しいです。私は所有者のためにそれを片付けると申し出ましたが、関係の大部分を見ると、おそらくもっと悪いことに何かを変えるでしょう。ただし、修正したい問題が1つあります。それは、プロパティがLoanStatusという名前のフィールドです。-Text -ComboBox -RowSource: "Current"; "Returned"; "Overdue"

私が抱えている問題は、アイテムを貸し出すたびに、資産番号を行に入力すると、システムがその行に期日を返すことですが、問題は、同じものを貸し出すことができるということです。アイテムをさまざまなテーブル(さまざまな人に)で無限に使用する場合、すでに貸し出されているときに貸し出そうとするたびに、LoanStatusフィールドに「AlreadyLoaned」と表示させたいと思います。繰り返しになりますが、これを書くことで頭痛がしましたが、皆さんがそれを理解してくれることを願っています。お時間をいただきありがとうございます!

MSAccess2007を使用しています

4

2 に答える 2

1

データの正規化の原則により、他の値から計算できる値をデータベースに保存しないでください。そのため、"Already Loaned" 値を持つ代わりに、データベースから値を取得するクエリの一部にして、本が貸し出されているかどうかを確認する必要があります。

次のようになります。

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

これが行うことは、すべての本と、それが持っているすべての貸出の数を返すことです。左外部結合は、書籍/貸出の組み合わせごとに 1 つの行を取得することを意味し、その書籍に貸出がない場合は、書籍/貸出なしの行を取得します。次に、同じ本を含むすべての行をグループ化し、null 以外のローン ID がいくつあるかを数えて、その値を返します。

于 2013-02-04T04:15:13.153 に答える
0

正規化されたデータベースへの管理アクセス権がある場合は、適切なテーブルの LoanStatus に「Occupado」の値を追加します。それ以外の場合は、値を取得している ms access データベース テーブルのスキーマに関する詳細情報が参考になります。データベースに新しい値を追加するだけでなく、「チェックアウト」プロセスに何らかのルールを追加する必要があります。

于 2013-02-04T04:27:12.180 に答える