0

誰かが私を助けてくれるか、少なくとも回避策を見つけてくれることを願っています。

私は Access 2007 の分割フォーム機能を使用しており、Form_Open イベントと 2 つの button_click イベントの後に以下のコードを実行しています。コードは、button_click イベントの後に実行すると問題なく動作しますが、form_open イベントで実行すると問題が発生します。

フォームが開かれ、ユーザーが最初のフィールドにテキストを入力すると、Tab またはマウスを使用して次のフォーム フィールドを選択できません。Esc を押してデータ入力をキャンセルするまで、ユーザーは最初のフォーム フィールドにとどまります。フォームを開いたときに最初のフォーム フィールドにデータを正しく入力するには、まず別のフォーム フィールドを選択し、次に最初のフォーム フィールドを再度選択して、最初のフォーム フィールドにテキストを入力する必要があります。このナンセンスの後、ユーザーはタブまたはマウスで次のフォーム フィールドを選択できます。これは、フォームが起動されるたびに 1 回実行する必要があります。button_click イベントで同じ VBA コードが正常に機能します。

注意: フォームを最初に開いたとき、フォームのデータシート セクションのフォーム フィールドはどれも「選択済み」と表示されません。ユーザーが最初のフォーム フィールドにデータを入力し始めると、「新しいレコード」マーカー (*) が 2 行目に移動しますが、最初の行には入力中のデータが表示されません。この動作は奇妙です。

フィールドのクリアを実行した後、別のフィールドをクリックし、クリックして上記の最初のフィールドの回避策に戻ります。データシートには、適切に選択されたフィールドと入力されたデータが表示されます。

何か案は?これはバグですか?フォームを開いたときに VBA を介してフィールド選択の回避策を実行するなど、簡単な回避策はありますか?

どんな助けでも大歓迎です。

コード:

DoCmd.ApplyFilter , "([Contractor].[CheckOutStamp] Is Null)"
DoCmd.GoToRecord , "", acNewRec

mdb へのリンク: https://docs.google.com/leaf?id=0B-jx09cwIQDsYWM2MzMzMDQtYjUzNi00N2E5LWFjYTktNzFiYWYzMDZiYWU1&hl=en&authkey=CPPmoMEF

4

1 に答える 1

0

いくつかの考え:

OnOpenからOnLoadに移動してみてください。OnOpenのイベントは、データが実際にロードされる前に発生する可能性がありますが、OnLoadは、データが実際にロードされた後に発生します。

また、フォームのFilterプロパティを[Contractor].[CheckOutStamp] Is Nullに設定し、FilterOnをYesに設定し、フォームをDataEntryに設定することもできます。これは、フォームを開くとデフォルトで新しいレコードになり、古いレコードは読み込まれません。開いたら、フォームの編集/追加モードを好きなように変更できます。

于 2010-10-28T22:58:11.670 に答える