お世話になっております。
単票フォーム上に、フォームのレコードソースになっているクエリのレコード数を表示するtxb_残り件数(コントロールソース:=Count([ID]) )と、現在のレコードが何番目なのかを表示するtxb_何件中何件目(コントロールソース:=[CurrentRecord] & "/" & [txb_残り件数])という2つのテキストボックスがあります。
btn_次レコードというクリック時にDoCmd.GoToRecord , , acNextで次のレコードに進むボタンと、btn_前レコードというクリック時にDoCmd.GoToRecord , , acPreviousで前のレコードに戻るボタンで移動するのですが、このボタンを使ってレコードを移動すると、[CurrentRecord]が正常に表示されません。
例えば総レコード数が5あるとして、1/5(5件中1件目)の状態でbtn_次レコードを1度クリックすると、レコード自体は移動しますが表示は1/5のままで、更にbtn_次レコードをクリックしていくと、2/5,3/5,4/5と進んでいき、新規レコードのところで5/5になります。
また、btn_前レコードを押していくときは、5/5(新規レコード)からだと、4/5,5/5,4/5,3/5,2/5と進んでいき、実際のレコードは1件目なのでもう一度btn_前レコードへを押すと指定したレコードに移動できませんとエラーが出ます。
フォームの移動ボタンを表示させたところ、ボタンを押した通りにレコードが移動するので、CurrentRecordの表示がおかしいのだと考えています。
解決方法・問題点等教えて頂きたいです。(そもそもCurrentRecordの使い方が間違っているなど)よろしくお願い致します。
当方でシンプルなサンプルを作成して確認してましたが、症状は確認できませんでした。
コマンドボタンで移動するごとに正しいレコード番号か表示されます。
コントロールの再計算のタイミングがずれている感じですね。
下記のように移動後に再計算させるとで改善されないですか。
あるいは、コントロールソースは空欄にしておいて、レコード移動時で代入するとか。
回答ありがとうございます。
私も簡素なサンプルを作成してみましたが、正常に値を表示できました。
フォームのレコード移動時イベントで、新規レコードなら次レコードボタン(+いくつかのテキストボックス 下記コードでは省略)を使用不可にするコードを書いています。
これが何かしらCurrentRecordの値取得に影響を及ぼしている可能性はありますか?
私の作成したサンプルにそのコードを追加しても、問題なく動作します。
問題のフォームと同じテーブルをレコードソースとするシンプルなフォームを作成して、
質問のテキストボックスとコマンドボタンを配置して、症状がでるか確認してみてください。
そこから、問題のフォームと同じになるように一つずつプロパティ設定やコードを追加していって、その都度、動作確認して、症状が発生する直前に変更、追加したものが、原因ということになります。
面倒ですが、原因追及するにはそのぐらいしかないでしょう。
ちなみに、前回の回答で提案した方法は2つとも効果がありませんでしたか。
原因究明は地道にやるしかないのですね・・・
Recalc、Refresh等を追記したところ、正常に表示されるようになりました!
ありがとうございます。