レコード表示Change時の処理の続き
前回はレコードが1件も無い場合の処理まで書きました。
今回はその残りの部分について見ていきましょう。ヽ(^-^ )
では「前へ」ボタンの条件判断について考えてみましょうか。
「前へ」ボタンが使用不可になる条件は何でしょう?
"現在のレコード番号が1件目を指している時"ですよね d(^-^ )
後ろに何件あろうと1件目を指しているときは、それ以上前にはいけません。
また、レコードが1件もなければ、同じく前にはいけませんよね(後ろにもいけませんが)。
ということでここの条件判断は
'現在のレコード番号が1以下の場合
If LngCurRecNumDsp <= 1 Then
CmdPrev.Enabled = False '前へ(不可)
Else
CmdPrev.Enabled = True '前へ(可)
End If
となろうかと思います。
続いて「次へ」の場合。
「次へ」が使用不可になる条件は何でしょう?
最終レコードを表示している時ですよね?
前に何件あろうと最後のレコードを表示している時には、それ以上後に進めません。
また、0件であれば「前へ」同様です。
ですので、
'現在のレコード番号と全レコード数が同じ場合
If LngCurRecNumDsp = LngAllRecCntDsp Then
CmdNext.Enabled = False '次へ(不可)
Else
CmdNext.Enabled = True '次へ(可)
End If
ということになりますねヽ(^-^ )
以上3つの処理を順番に並べておいて、おもむろに実行して動きを確認してみて下さい。
どうでしょうか?正しく切り替わってますか?
なんかパッと見ではこれで良さそうですよね。
「え?ということはこれでもダメなの?」という貴方。
ヒントは「新規」モードにあります。
「登録」ボタンをクリックすればレコードが追加されますよね。そうしますとレコードの表示はど
うなるでしょうか?
・・・そう! 最終レコード番号と全レコード数が一致してしまいます。
そうすると、それに反応して「前へ」ボタンが使用可能になってしまいますよね(^^;)
「新規」モード中は「登録」しか使えない状態でなければいけませんので、とりあえずこれら3つ
の処理をぐるっと囲ってしまいましょう。
Private Sub TxtRecCnt_Change()
If OptUpdMode.Value = True Then
'全レコード数が0件の場合
If LngAllRecCntDsp = 0 Then
CmdUpdate.Enabled = False '修正(不可)
CmdDelete.Enabled = False '削除(不可)
End If
'現在のレコード番号が1以下の場合
If LngCurRecNumDsp <= 1 Then
CmdPrev.Enabled = False '前へ(不可)
Else
CmdPrev.Enabled = True '前へ(可)
End If
'現在のレコード番号と全レコード数が同じ場合
If LngCurRecNumDsp = LngAllRecCntDsp Then
CmdNext.Enabled = False '次へ(不可)
Else
CmdNext.Enabled = True '次へ(可)
End If
End If
End Sub
意味はお分かりになりますよね?(^-^
Value が True ですから、いわゆる「修正/削除」モードが選択されている状態です。
で、その状態の時だけ以下の条件判断処理を有効にする、ということです。
もちろん
If OptUpdMode.Value = True Then
は
If OptAddMode.Value = False Then
と書き換えても結果は変わりません。
あくまで好みの問題だったりします(^-^;
さて次回はいよいよ最後の詰め、「初期化処理」をやってみたいと思います。
例によって、ご自分で書いてみてからお読みになるとより勉強になりますよ(^^)
それでは次回までごきげんよぉぉ
|
|
TOP > VBAでラクしたい ~Part 2~
|