私は、MS Access の使用を主張する人のためにいくつかの作業を行っています。私は通常それを使用しないので、制御構造全体とベストプラクティスに少し慣れていません。私が達成しようとしているのは、値が入力されると、詳細セクションの行をフィルター処理するフィルター テキスト ボックスをフォームに設定することです。それは簡単なユースケースのようです。最初に、On Change イベントのイベント ハンドラーとして次の動作を試しました。
Private Sub FilterGrid()
Me.Text32.SetFocus
If Not IsNull(Me.Text32.Text) And Me.Text32.Text <> "" Then
Me.Filter = "JobNumber LIKE '*" & Me.Text32.Text & "*'"
Me.FilterOn = True
End
Else
Me.FilterOn = False
End If
End Sub
これは、一致する行がないものを入力し、全体がこのエラーで爆発するまで完全に機能しました (フォームを閉じないと回復できませんでした): 実行時エラー '2185': プロパティまたはメソッドを参照できませんコントロールにフォーカスがない限り、コントロールの場合。
私はいくつかの読み物をしましたが、一般的な意見は、.Text を使用すべきではなく、.Value (または単にプロパティのない Text32) を使用する必要があるというものでした。これにより、非常に奇妙な動作が発生しました。はText32.Value
常に null です。私はウォッチ ウィンドウを持っており、通常の動作でText32.Text
は実際の値を持っていますが、 Text32.Value
NULL であることがわかります。
明らかに私は何か間違ったことをしていますが、それが何であるかを知るのに十分な Access の経験がありません。
余談ですが、もう 1 つの提案は Text32.SetFocus
、Text プロパティにアクセスする直前に行うことでした。これは、私が言及したエラーを解決しません。それでもまったく同じエラーがスローされます。
ここで正しい方向に私を向けることができる人はいますか?