2011-08-01 34 views
0

現在、レコードセットがテーブルに基づいているフォームを持つ2003 MS Accessデータベースがあります。また、このフォームには、結合表のフィールドの1つの制御元を持つコンボボックスがあります。レコードセットは、利用可能なすべての 'サービス'を別のテーブルから取得し、選択した 'サービス'のIDをフォームバインドテーブルに格納したクエリの結果です。コンボボックスには、カラム幅が0cm、1cm、1cmと定義されたカラムが3つあり、カラム1はバインド(ID)カラムです。MS Accessバインドされたコンボボックスがテーブルにリンクされたフォーム

これにより、ドロップダウンリストから「サービス」を選択し、そのサービスのIDをテーブルに格納して入力することができます。もちろん、このフォームにはテーブル内の行に結びつけられた多くの行を含めることができます。

これはうまく動作し、素晴らしいです。ただし、このドロップダウンの値は別のフィールドに基づいている必要があります。したがって、1セットの 'サービス'を持つ代わりに、ドロップダウンには複数のセットの 'サービス'があり、別のコンボボックスに基づいて表示されます。

私は、このサービスドロップダウンのレコードセットクエリを変更して、他のフィールドを考慮してから、サービスリストコンボボックスのonenter()イベント、クエリー自体(サービス一覧)を変更することで、しかし、フォーム内に5つの行がある場合、それぞれのサービスリストは現在の行の他のフィールドに基づいており、コンボボックスが空白になる原因となります。これは基本的なテーブルには影響しませんが、かなり迷惑です。

提案がありますか?

"制限するリスト"プロパティを "いいえ"に設定しようとしましたが、コンボボックス内の最初のフィールド(バインドされたフィールド)の幅が0CMの場合は実行できません。私が0CMに等しくないように設定すると、このコンボボックスの表示値はIDフィールドになります。これは私が望むものではありません。

答えて

1

これらの状況で使用する回避策は、2番目のバインドされたコンボボックスを追加することです。 2番目のコンボボックスは最初のコンボボックスと全く同じですが、いくつかの重要な違いがあります。

(表示に使用)まずコンボボックス

  • (最前面へ移動を介して設定された)zオーダーのトップへ
  • 少ない制限値集合ソース(すなわち、他の現在のフィールドの値に基づいていません)
  • フォーカス取得時:=[OtherCombo].[SetFocus]

(編集用の)2番目のコンボボックス

  • 値集合ソースは、いくつかの他の制御(例えば、CategoryControl)に基づいて制限(背面へ移動を介して設定された)zオーダーのボトム
  • は、値集合ソースは、フォームの現在のイベントに値集合ソースを取得します
  • に更新されますCategoryControlのAfterUpdateイベントで更新されました

したがって、RowSourceの制限が少ないため、最初のコンボボックスが空白になることはありません。ただし、2番目のコンボボックスでは、ユーザーが他のフィールドに基づいて選択した値を制御できます。

各コンボボックスを異なるBackColorで設定すると、何が起きているのかが明白になります。

0

代わりのフィルタコンボボックスのフォーカス取得時のイベントを使用して、あなたは、これら二つのイベントでそれを再クエリする必要があります。

  1. フォームのOnCurrent。

  2. 最初のコンボボックスのAfterUpdateイベント。

これはAccess FAQ(カスケードコンボボックス)であり、実際にはそれほど難しいことではありません。最初のコンボボックスの値が変更されたときに2番目のコンボボックスの内容を変更したいだけなので、2つのイベントでそれを行う理由は慎重にしようとしていることを考える必要があります2番目のコンボボックスのOnEnter(これは理由がないときに起動します)にはありません。

編集:

私は連続したフォームの側面を見逃しました。私の意見では、これはちょうど連続フォームが編集可能ではない状況のまさにタイプです。代わりに、連続フォームにレコードの静的リストを作成し、LinkMaster/LinkChildを持つ別のサブフォームを連続フォームのPKフィールドにバインドし、その別のフォーム(単一フォーム)を使用して詳細を編集することをおすすめします。レコードを選択するには連続フォームを使用し、詳細を表示して実際の編集を行うには単一フォームを使用します。

+0

OPはこれを連続フォームで実装しようとしています。だからこそ彼は自分が持っている問題を抱えているので、私は解決策として「隠された」コンボボックスのハックを提供したのです。 – mwolfe02

関連する問題