2017-09-20 5 views
0

私は、私のVBAアクセスフォームに3つのコンボボックスコントロール(MFG、コード、およびGrpID)を持っています。ユーザーが最初のコンボボックス(MFG)からオプションを選択すると、残りのコンボボックスが利用可能なオプションを表示します。しかし、ユーザーが最初のコンボボックスの値を変更することを決めた場合、何らかの検証を行う必要があります。残りのコンボボックスの値はクリアする必要があります。私がする必要があるのは、最初のコンボボックスが変更されたら、2番目と3番目のコンボボックスをクリアするか、少なくともフォーカスを合わせる必要があるため、最初の値がクリアされたときに古い値を使用できない最初のコンボボックスに。下図のように私は、最初のコンボボックスのコードブロック」AfterUpdateを追加しました:vbaアクセスで別のドロップダウン値が変更されたら、ドロップダウン値をクリアしますか?

Private Sub MFG_AfterUpdate() 
    Code.Value = " " 
    GrpID.Value = 0  
End Sub 

問題のコードの上に書いた後である:彼ら(コードとGRPID)がクリックを取得するまで、彼らは空に得ることはありません。言い換えれば、MFGの価値を変えるたびに、それらをクリックして空にする必要があります。誰でも私に指示することができますか私はそれらをクリアするか、少なくとも彼らに焦点を当てる?

+0

おそらくRequeryが必要ですか?また、そのイベントが動作していない場合は、 'Change'イベントを試してください –

+0

私が提供したデータでこの動作を複製することはできません(これを試してみるとAferUpdateイベントが発生するとコンボボックスが即座にクリアされます)。 AfterUpdateイベントは、ドロップダウンからコンボボックスを変更するとき、または入力時に変更したコンボボックスからタブを移動したときに発生します。詳細を教えてください。 –

答えて

0

表示されている値を消去するには、コンボをヌルに設定します。

Me.Code = Null 
Me.GrpID = Null 

これは、コンボコントロールがフィールド名と同じと呼ばれることを前提としています。

明快にするための編集:私を含む。あなたがフォームコントロールの値を変更していることを確認します。フィールド名がコントロールと同じ場合、Accessは基になるフィールド値を変更し、フォーム上で検出したように、フィールドのバインドされたコントロールをクリックするまで反映されません。

+0

私はOPが持っている問題を解決するのに疑念があります。(少なくとも私の設定で) '' '' '' 'や' 0'もすべて設定されています。はい、「Null」に設定する方が良いですが、OPの問題が修正されたと思われる場合は、理由を説明してください。私の最善の推測は、OPのセットアップの後半で 'On Update'機能が遅れることです。この場合、これは違いはありませんが、複製できないので、テストできません。 –

+0

これは、最初のコンボボックス、私は彼のフィールド名の使用ではなく、私を使用して、現在のフォームコントロールオブジェクトを参照すると思われる。彼の問題の原因だから、私の答えはまだ立っていると思う。 – Minty

+0

これは答えに含めるのに便利な情報です(ユーザーがエラーを再び回避するのに役立ちます。 'Me 'は関連する部分であり、' Null'ではないことを知ることは有益です)。しかし、矛盾する変数がない場合(ほとんどの状況では 'Application.'と同じように)、' Me.'を省略することができるので、それは当然です。もしそうなら、あなたはおそらくこの動作をしません。 、ただ遅く)。しかし、言ったように、それを複製することはできませんので、テストすることはできません、我々はOPを待つ必要があります。 –

関連する問題