Microsoft Access 掲示板

CurrentRecordの表示がおかしい

4 コメント
views
4 フォロー

お世話になっております。

単票フォーム上に、フォームのレコードソースになっているクエリのレコード数を表示する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の使い方が間違っているなど)よろしくお願い致します。

驚天動地!前任者失踪丸
作成: 2024/04/08 (月) 10:54:26
通報 ...
1

当方でシンプルなサンプルを作成して確認してましたが、症状は確認できませんでした。
コマンドボタンで移動するごとに正しいレコード番号か表示されます。

コントロールの再計算のタイミングがずれている感じですね。
下記のように移動後に再計算させるとで改善されないですか。

    DoCmd.GoToRecord , , acNext
    Me.Recalc
    Me!txb_何件中何件目.Requery

あるいは、コントロールソースは空欄にしておいて、レコード移動時で代入するとか。

Private Sub Form_Current()
    If Me.NewRecord Then
        Me.txb_何件中何件目.Value = Me.CurrentRecord & "/" & Me.Recordset.RecordCount + 1
    Else
        Me.txb_何件中何件目.Value = Me.CurrentRecord & "/" & Me.Recordset.RecordCount
    End If
End Sub
2
驚天動地!前任者失踪丸 2024/04/08 (月) 13:47:30 23e8e@44ebd >> 1

回答ありがとうございます。
私も簡素なサンプルを作成してみましたが、正常に値を表示できました。

フォームのレコード移動時イベントで、新規レコードなら次レコードボタン(+いくつかのテキストボックス 下記コードでは省略)を使用不可にするコードを書いています。


Private Sub Form_Current()

    If Me.NewRecord = True Then '新規レコードの場合はテキストボックスを操作不可にする

        [btn_次レコード].Enabled = False

    Else

        [btn_次レコード].Enabled = True

    End If

End Sub

これが何かしらCurrentRecordの値取得に影響を及ぼしている可能性はありますか?

3

これが何かしらCurrentRecordの値取得に影響を及ぼしている可能性はありますか?

私の作成したサンプルにそのコードを追加しても、問題なく動作します。

問題のフォームと同じテーブルをレコードソースとするシンプルなフォームを作成して、
質問のテキストボックスとコマンドボタンを配置して、症状がでるか確認してみてください。

そこから、問題のフォームと同じになるように一つずつプロパティ設定やコードを追加していって、その都度、動作確認して、症状が発生する直前に変更、追加したものが、原因ということになります。

面倒ですが、原因追及するにはそのぐらいしかないでしょう。

ちなみに、前回の回答で提案した方法は2つとも効果がありませんでしたか。

4
驚天動地!前任者失踪丸 2024/04/09 (火) 10:06:42 23e8e@44ebd >> 3

原因究明は地道にやるしかないのですね・・・

Recalc、Refresh等を追記したところ、正常に表示されるようになりました!
ありがとうございます。