2012-04-23 23 views
0

メインフォームには10個のタブがあり、各タブにはサブフォームコントロールが1つあります。 10個のタブすべてをサブフォームとして開始しました。メインフォームには少数の追加コントロールしかなく、そのうち1つは主キーです。この主キーを含むすべてのサブフォームのRecordsource。 OKを表示しますが、メインフォームのレコードナビゲーションでは新しいレコードへの移動が許可されず、メインフォームの新しいレコードボタンが機能しないため、新しいレコードを追加できません。最初のタブ上のすべてのコントロールがサブフォームではなくメインフォームの一部になるように、設計を変更しようとしました。すべてのサブフォームレコードセットが、クエリにPKを含まず、マスター/子プロパティを介してのみリンクするように変更しました。これで新しいレコードに移動することができます(ただし、新しいIDパラメータを入力する前にプロンプ​​トが表示されますが、既存のレコードを編集することはできません)。Access 2007複数のサブフォームをタブでメインフォームにリンクするには

これを行う正しい方法は何ですか?オンになっているがメインフォームでスイッチオフされているサブフォームにナビゲーションを記録しますか?レコードソースのクエリの一部としてのPKかどうかすべてのサブフォームまたは良いアイデアは、最初のタブをメインフォームの一部として持っていますか?何かアドバイス?

+0

単純にテーブルをバインドするのではなく、ADOを使用して非標準の設定をしていることを覚えているようですが、それは間違いありませんか?ところで、私は10タブを使用することはありません。タブを使用しているかのように見せかけ、必要に応じてサブフォームをロードするだけでパフォーマンスを向上させる方がよいでしょう。 – Fionnuala

+0

私は通常、対応するタブが最初に選択されたときに、サブフォームコントロールを空のままにして、フォームを 'SourceObject'に割り当てます。 –

+0

@Remou:いいえ、すべてのフォーム/サブフォームコントロールはテーブルにバインドされています。異なるサブフォームは異なる時に関連するので、メインフォームのOn Loadイベントを使用して、サブフォームコントロールのSourceObjectを設定しています。 – Chelle

答えて

2

メインレコードのプライマリキー(PK)は、子レコードの外部キー(FK)と一致する必要があります。

 
tblCustomer    tblOrder 
+----------------+  +----------------+ 
| PK CustomerID |1--+ | PK OrderID | 
+----------------+ | +----------------+ 
|    | +--∞| FK CustomerID | 
+----------------+  |    | 
         +----------------+ 

ため、サブフォームコントロールのLink Master Fieldsプロパティは、この例でCustomerID(tblCustomerにおけるPK)及びLink Child FieldsCustomerIDならびに(tblOrderでFK)でなければなりません。

関連する問題