私は、MS Access 2007で一時的な顧客追跡システムを設計するタスクを割り当てられました(sheeeesh!)。テーブルとリレーションシップはすべて正常にセットアップされました。しかし、1つのテーブルのデータ入力フォームを設計しようとしているときに、小さな問題が発生しました...最初に少し説明します。
画面には、3つのドロップダウンボックスが含まれています(他のフィールドは別として)。
最初のドロップダウン
最初のドロップダウン(cboMarket)は、ユーザーが2つのオプションから選択できるマーケットを表します。
- 国内
- 国際的
最初のドロップダウンには2つのアイテムしか含まれていないので、わざわざテーブルを作成する必要はありませんでした。事前定義されたリストアイテムとして追加しました。
2番目のドロップダウン
ユーザーがこれを選択すると、2番目のドロップダウン(cboLeadCategory)に、見本市と展示会、エージェント、プレス広告、オンライン広告などのリードカテゴリのリストが読み込まれます。2つの市場で異なるリードカテゴリのセットが使用されます。 。したがって、このボックスは最初のボックスに依存しています。
2番目のコンボのLead_Cateogriesという名前のバインドされたテーブルの構造は次のとおりです。
ID Autonumber
Lead_Type TEXT <- actually a list that takes up Domestic or International
Lead_Category_Name TEXT
3番目のドロップダウン
また、2番目のカテゴリの選択に基づいて、3番目のカテゴリ(cboLeadSource)は、特定のカテゴリに属する事前定義されたリードソースのセットを表示することになっています。
テーブルの名前はLead_Sourcesで、構造は次のとおりです。
ID Autonumber
Lead_Category NUMBER <- related to ID of Lead Categories table
Lead_Source TEXT
1番目のドロップダウンで選択を行うと、コンボのAfterUpdateイベントが呼び出され、2番目のドロップダウンにコンテンツをロードするように指示します。
Private Sub cboMarket_AfterUpdate()
Me![cboLead_Category].Requery
End Sub
2番目のコンボの行ソースにはクエリが含まれています。
SELECT Lead_Categories.ID, Lead_Categories.Lead_Category_Name
FROM Lead_Categories
WHERE Lead_Categories.Lead_Type=[cboMarket]
ORDER BY Lead_Categories.Lead_Category_Name;
2番目のコンボのAfterUpdateイベントは次のとおりです。
Private Sub cboLeadCategory_AfterUpdate()
Me![cboLeadSource].Requery
End Sub
3番目のコンボの行ソースには次のものが含まれます。
SELECT Leads_Sources.ID, Leads_Sources.Lead_Source
FROM Leads_Sources
WHERE [Lead_Sources].[Lead_Category]=[Lead_Categories].[ID]
ORDER BY Leads_Sources.Lead_Source;
問題
cboMarketからマーケットタイプを選択すると、2番目のコンボcboLeadCategoryが問題なく適切なカテゴリをロードします。
しかし、そこから特定のカテゴリを選択すると、リードソース名をロードする3番目のコンボの代わりに、パラメータの入力を求めるモーダルダイアログが表示されます。
代替テキストhttp://img163.imageshack.us/img163/184/enterparamprompt.png
このプロンプトに何か(有効または無効なデータ)を入力すると、さらに別のプロンプトが表示されます。
代替テキストhttp://img52.imageshack.us/img52/8065/enterparamprompt2.png
なぜこうなった?3番目のボックスが必要に応じてソース名をロードしないのはなぜですか。誰かが私が間違っているところに光を当てることができますか?
ありがとう、m ^ e
================================================== =
アップデート
3番目のコンボのクエリに不具合が見つかりました。2番目のコンボの値と一致していませんでした。私はそれを修正しました、そして今クエリは次のようになります:
SELECT Leads_Sources.ID, Leads_Sources.Lead_Source
FROM Leads_Sources
WHERE (((Leads_Sources.Lead_Category)=[cboLead_Category]))
ORDER BY Leads_Sources.Lead_Source;
それらの厄介なEnterParamプロンプトはなくなりました!!! ただし、3番目のコンボはまだ頑固に値をロードすることを拒否します。何か案は?