2016-07-21 10 views
0

2つのサブフォームを含むアクセスフォームがあります。メインフォームには3つのドロップダウンフィールドがあり、ユーザーは2つのリンクされたサブフォームに表示されるデータを選択できます。ドロップダウンフィールドは、メインフォームのデータソースで参照されているので、すべてバインドされていません。アクセスユーザーフォームを作成してデータを検索して追加する方法

次のようにメインフォームのデータソースのSQLは次のとおりです。

SELECT tbl_RptPeriod.RptPrdID, tbl_BusUnits.UnitID, tbl_Categories.CategoryID, tbl_Categories.CategoryTitle, tbl_Categories.CategoryGroup, tbl_Categories.Inactive, tbl_Categories.RptPrdID, tbl_Categories.UnitID 
FROM tbl_RptPeriod INNER JOIN (tbl_BusUnits INNER JOIN tbl_Categories ON tbl_BusUnits.UnitID = tbl_Categories.UnitID) ON tbl_RptPeriod.RptPrdID = tbl_Categories.RptPrdID 
WHERE (((tbl_RptPeriod.RptPrdID)=[Forms]![Compliance]![cmbReportPeriod]) AND ((tbl_BusUnits.UnitID)=[Forms]![Compliance]![cmbBusinessUnit]) AND ((tbl_Categories.CategoryID)=[Forms]![Compliance]![CategoryTitle])); 

これは、レコードをルックアップするために完璧に動作します。しかし、ユーザーが探しているものに新しいレコードを追加できるようにしたい。それはうまくいかない。

私はレコードを追加することができますが、その後、私は使用していますフォーム要素は、データ、特にRptPrdIDUnitIDをルックアップするために、そしてCategoryIDが表に移入されていない、ので、新しいレコードが関連付けられていないで、表示されません。それを閉じて別のレコードに移動した後で再びメインフォームでそれらを検索する場合は、

これは、SQLの「WHERE」条件で使用しているフォーム要素がアンバインドされている限り意味がありますが、もちろん新しいレコードを追加すると、正しくマッチングされるようにしたいと思います。ユーザーが同じ基準を再度検索する場合、追加するレコードを見つけることができる必要があります。

質問: はどのように私は新しいレコードがRptPrdIDUnitIDを持っているサブフォームに入力された、とCategoryIDを充填得ることができますか?

UPDATE

SELECT tbl_Activity.CategoryID AS CategoryID_X, tbl_Activity.RptPrdID AS RptPrdID_X, tbl_Activity.UnitID AS UnitID_X, tbl_Categories.SortKey, tbl_Categories.CategoryTitle, tbl_Categories.CategoryGroup, tbl_Categories.Inactive, tbl_Categories.Inactive, tbl_BusUnits.Unit_Name, tbl_RptPeriod.Rep_Month_Nr, tbl_RptPeriod.Rep_Month_Name, tbl_RptPeriod.Rep_Year 
FROM tbl_RptPeriod INNER JOIN (tbl_Categories INNER JOIN (tbl_BusUnits INNER JOIN tbl_Activity ON tbl_BusUnits.UnitID = tbl_Activity.UnitID) ON tbl_Categories.CategoryID = tbl_Activity.CategoryID) ON tbl_RptPeriod.RptPrdID = tbl_Activity.RptPrdID 
WHERE (((tbl_Activity.CategoryID)=[Forms]![Compliance_EXPERIMENT]![cmbCategoryTitle]) AND ((tbl_Activity.RptPrdID)=[Forms]![Compliance_EXPERIMENT]![cmbReportPeriod]) AND ((tbl_Activity.UnitID)=[Forms]![Compliance_EXPERIMENT]![cmbBusinessUnit])) 
ORDER BY tbl_Categories.SortKey; 

私は多少のクエリを変更しなければならなかったが、彼らは別のテーブルの上に今あるもののキーフィールドは、まだ同じものです。

Private Sub Form_BeforeInsert(Cancel As Integer) 
    Me.RptPrdID_X = Me.cmbReportPeriod 
    Me.UnitID_X = Me.cmbBusinessUnit 
    Me.CategoryID_X = Me.cmbCategoryTitle 
End Sub 

答えて

2

メインフォームのBefore Insert場合に、それらの3つのフィールド

Private Sub Form_BeforeInsert(Cancel As Integer) 
Me.RptPrdID = Me.cmbReportPeriod 
Me.UnitID = Me.cmbBusinessUnit 
Me.CategoryID = Me.CategoryTitle 
End Sub 
+0

を埋めるためのコードを追加します。ありがとうございました!私は新しいものをシンプルにしなければならなかったが、私はそれを手に入れていなかった! – rohrl77

+0

Sergey、フォームの一部を変更しましたが、解決策はもう機能していません。コントロールに適切な名前が付いていることと、レコードソースも正しく指定されていることを確認しましたが、それでも機能しません。それは何が原因でしょうか? – rohrl77

+0

何が変更されたのですか、エラーメッセージとは何ですか?フォームにデータが正しく表示され、コンボボックスに正しいデータが表示されていることを確認してください。手動でフォーム内のデータを変更できることを確認します(クエリは更新可能です)。コードがエラーなしでコンパイルされていることを確認してください。 –

関連する問題