2016-08-04 8 views
0

私は単純なアンバウンドアクセス2016フォームを持っています。フォーム上には、テキストやコンボボックスなどのコントロールがいくつかあります。最初のテキストボックスコントロールでは、データ値が必要です(基になるテーブルフィールドのデータ型は短いテキストです)。アクセス2016フォームコントロールの検証ルールが実行されない

プロパティシートのコントロールの検証ルールプロパティを "Nullではありません"に設定し、適切な検証テキストメッセージを追加しました。

未知の理由で私はこの検証ルールを実行することができませんでした。私はそれが干渉していないことを確認するためにテーブル上の検証ルールをクリアしましたが、運はありません。

フォーカスがコントロールを離れると、検証チェックが行われないようです。どちらかに干渉する記述された他のイベントプロシージャはありません。

ありがとうございました。

+2

コントロールを変更しない限り、検証は実行されません。あなたのコントロールがnullかどうかをチェックするために、フォームレベルでbefore_updateイベントを使用することをお勧めします。 – Rene

+0

Reneさん、ありがとうございました。実際には、変更がない限り、検証が実行されないことに気付きませんでした。更新前のイベントを見ると、同じ問題があり、変更が発生しない限り起動しません。私の望みは、ユーザーがコントロールを終了するときにバリデーションルールをトリガーすることです。 John Fowlerが解決策を持っているか、退出イベントプロシージャのコントロールにいつでも落とすことができます。 – Richard

答えて

0

要件はコントロールがなくて、テキストボックスの外にタブ付き焦点(すなわちユーザーを失ったときに検証ルールを使用して欠損値の制御を検証することでした、コントロールをデフォルト値を与えることができますこれまでに値を入力する)。私は、ユーザーが、与えられたコントロールの値を提供するために必要な即時フィードバックを得ることを望んでいました。

Reneがコメントに指摘したように、値の変更がない限り、検証ルールは起動しません。

Sendkeysソリューションに問題があります。私は最後の手段としてSendkeysのみを使用しています。

この場合の解決策は、Control_OnExitイベントハンドラに検証テストを入れることでした。ユーザーは必要に応じて即時フィードバックを取得し、レコードが送信されるまで待機しません。

簡単に見逃される可能性のあるメモがもう1つあります。 がバインドされていない形式では、before_updateイベントは発生しません。

0

あなたはその後、

Form_load() 
Yourcontrol.setfocus 
Sendkeys "{DEL}" 
+0

私はこの問題をコントロールのOnExitプロシージャで処理すると思います。 Sendkeys delはNumlockのオン/オフ切り替えをトリガしますので、これは機能しません。 – Richard

関連する問題