-1

Customerテーブル、テーブルOrder、テーブル、OrderlineテーブルがありProductます。それらはすべてAutonumber主キーとしてフィールドを持ち、テーブル上Orderlineの外部キー参照を持っています:Order IDOrder

ORDER
-----
Order ID - Autonumber  
Customer ID - Number  
...

ORDERLINE
---------
OrderLine ID - Autonumber  
Order ID - FK to Order  
Product ID - FK  to Product  
Quantity  

PRODUCT
-------
Product ID - Autonumber  
Product details...  

顧客を選択できるフォームがあり、テーブルからレコードのリストがあり、このOrderlineサブフォームから参照するクエリがあります。Order IDOrderline IDProduct IDProduct details

2つの問題があります。

  1. すべての注文が表示されますが、この注文に関連付けられているものだけが必要です (フォームが最初に読み込まれたときは何もないはずです)。

  2. Product ID新しい注文に追加したい を入力すると、新しいOrder ID(自動インクリメント) と入力した新しい Orderline ID , (Autoincremented) and the details of the product that I have selected, corresponding to theProduct ID が表示されることを期待していますが、代わりに次のエラー メッセージが表示されます。

インデックス、主キー、または関係に重複する値が作成されるため、テーブルに対して要求した変更は成功しませんでした。重複データを含むフィールドのデータを変更するか、インデックスを削除するか、インデックスを再定義して重複エントリを許可し、再試行してください。

問題は、新しいレコードを作成しようとすると、テーブルが一意のキーを作成する必要があり、各テーブルに直接アクセスして新しいレコードを入力すると、自動採番が機能し、一意のキーが作成されることです。と の両方を同時に作成しようとしていますOrder IDOrderline ID、失敗しているようです。

私はこれに何日も費やし、数え切れないほどの検索エンジンを検索し、注文フォームの作成に関する一連の YouTube ビデオを見ましたが、役に立ちませんでした。これがSQLの問題である場合、同様の状況にある人を数分で助けることができるので、Accessを理解している人なら誰でも私を助けることができると確信しています.

4

1 に答える 1

0

サブフォームを作成するときは、親フォームとサブフォームの間の関係を指定する必要があります。テーブルに対して作成したのと同じリレーションシップ。次に、Access のみがレコードをフィルター処理します。

あなたの質問について。[customer_id、staff_id、注文の詳細など] を入力/選択する [order] テーブルに新しい [order] レコードを作成する必要があります。

1 つの注文に複数のアイテムを含めることができるため、[order_items] テーブル (オーダーラインはこのテーブルに使用する用語であると仮定します) が存在します。

  • order_id
  • product_id (order_id、product_id複合キー)
  • 価格
  • 等..

注文を取り始めたい場合は、tbl_order にバインドされた新しいフォームを作成する必要があります。frm_order には、 tbl_oder_items にバインドされたサブフォームがあります (あなたの場合はオーダーライン)

frm_order と frm_oder_items には関係が必要です。通常、テーブルをドラッグしてサブフォームを作成すると、ACCESS は関係を設定するように求めます。サブフォームを手動で作成する場合:

  • サブフォームを選択
  • プロパティシートに移動
  • リンク マスター フィールドを選択します: order_id
  • リンクの子フィールドを選択します: order_id

ここで frm_order を開くと、tbl_order_items テーブルのすべてのレコード (つまり、注文のリストにあるすべての製品) が表示されます。

tbl_order_item /orderline テーブルも、product_id フィールドを介して製品テーブルを参照しています。

frm_order_items にコンボボックスを挿入し、product_id にバインドします。コンボボックスの行ソースは次のようになります

select product_id, product_name from tbl_product

次のエラー メッセージが表示さ れます。重複データを含むフィールドのデータを変更するか、インデックスを削除するか、インデックスを再定義して重複エントリを許可し、再試行してください。

同じ注文で商品を 2 回追加しようとした場合。代わりに、製品の数量を増やす必要があります。

これを試してみて、どうだったか教えてください。

于 2015-04-22T15:23:24.627 に答える