Access 2007 Split Form VBA:ACNEWREC ON OPENはフォームのタブを防ぎます - 最初のフィールドが「選択」されていないような動作
-
27-09-2019 - |
質問
誰かが私を助けたり、少なくとも回避策を把握できることを願っています。
Access 2007の分割フォーム機能を使用しています。2つのButton_Clickイベントの後、Form_openイベントで以下のコードを実行します。コードは、Button_Clickイベントを実行して実行すると正常に動作しますが、form_openイベントで実行されると問題が発生します。
フォームが開かれ、ユーザーが最初のフィールドにテキストを入力した場合、タブまたはマウスを使用して次のフォームフィールドを選択することはできません。ユーザーは、ESCを押してデータエントリをキャンセルするまで、最初のフォームフィールドに閉じ込められます。フォームが開かれたときに最初のフォームフィールドにデータを正常に入力するには、ユーザーは最初に別のフォームフィールドを選択し、最初のフォームフィールドを再選択してから、最初のフォームフィールドにテキストを入力する必要があります。このナンセンスの後、ユーザーはタブまたはマウスを使用して次のフォームフィールドを選択できます。これは、フォームが起動するたびに1回実行する必要があります。 Button_clickイベント上の同じVBAコードは正常に動作します。
注目すべき:フォームが最初に開かれたとき、フォームのデータシートセクションのフォームフィールドは「選択」されていません。ユーザーが最初のフォームフィールドにデータの入力を開始すると、「新しいレコード」マーカー(*)は正常に2行目に移動しますが、最初の行は入力であるデータを表示しません。この動作は奇妙です。
クリアフィールドを実行した後、別のフィールドをクリックして、上記の最初のフィールドワークアウンドに戻るに戻ります。データシートには、選択されたフィールドとデータが入力されているため、適切にフィールドとデータが表示されます。
何か案は?これはバグですか?フォームオープンでVBAを介してフィールド選択回避策を実行するなど、簡単な回避策はありますか?
どんな助けも大歓迎です。
コード:
DoCmd.ApplyFilter , "([Contractor].[CheckOutStamp] Is Null)"
DoCmd.GoToRecord , "", acNewRec
解決
いくつかの考え:
OnopenからOnloadに移動してみてください。 Onopenのイベントは、データが実際にロードされる前に発生する可能性があり、その後オンロードが発生すると既に行われます。
また、フォームのフィルタープロパティを [Contractor].[CheckOutStamp] Is Null
フィルターを「はい」に設定し、フォームをDataEntryに設定します。つまり、オープン時にデフォルトで新しいレコードになり、古いレコードをロードしません。開いたら、フォームの編集/追加モードを好きなものに変更できます。