いしもち通信

お魚大好き人間の情報交換。旅先の思い出情報交換。
サーバー管理。学校でのAccess利用。PC関連情報。
社会問題。

Accessでカウントダウンタイマー

2019-07-20 08:37:05 | Weblog

タイマーと言えば、ゲームなどのライフインジケータ形式のものが視覚的には便利です。
かつて、VisualBasic版のアプリで実装したものをAccessのアプリにも実装しました。
ついでなのでデジタル式のタイマーも実装しようと思いましたが、秒だけなら簡単ですが、分も入ると結構大変そうです。
というより面倒そうなことは考えたくないので、何かいい方法はないかと時間や日付関係の関数を調べていると使えそうなものがありました。
ちよっとした「ごまかし」なのですが十分な機能を果たします。
下記のURLに開発経緯の詳細はありますので参考にしてください。

今回、タイマー機能だけ取り出したものをここで公開します。
まず画面例を見てもらいます。

 何分何秒の設定ができるような仕様です。
 何時間何分何秒も可能です。実はこちらの方が簡単です。「ごまかし」と言ったのは、実は時間の部分を表示していないだけです。

分と秒をセットして、リセットボタンを押すと時間がセットされます。あとはスタート、ストップでタイマーとなります。

残り時間が0になると「時間です」のメッセージが出ます。

使用した関数は
TimeSerial
DateAdd
の2つです。


  TimeSerial関数の「分」と「秒」だけ利用します。DateAdd関数の"s"秒単位と"-1"を利用します。
  実際のコードを以下に示します。

 

Option Compare Database

Dim i As Integer

Dim dt As Date

 

Private Sub Form_Timer()

dt = DateAdd("s", "-1", dt)

Me.twatch = Right(Format(dt, "hh:mm:ss"), 5)

 i = i + 1

If i = Me.tmin * 60 + Me.tsec Then

    MsgBox "時間です"    

Me.TimerInterval = 0    

Exit Sub    

End If

End Sub

 

Private Sub cmdReset_Click()

dt = TimeSerial(7, Me.tmin, Me.tsec)     '時間部分は適当な数字を

i = 0

Me.twatch = Right(dt, 5)

End Sub

 

Private Sub cmdStart_Click()

Me.TimerInterval = 1000

End Sub

 

Private Sub cmdStop_Click()

Me.TimerInterval = 0

End Sub

 

「分」「秒」表示はFormatはなくてもRight関数だけで大丈夫です。

あと工夫するとすれば、残り10秒になったら、文字色を赤くするとか、大きくするとかすればよいかもしれません。
その場合は、残り10秒を判断するには、カウンターを減らすようにした方が分かりやすいでしょう。
現状はi=i+1です。これを初期値をi = Me.tmin * 60 + Me.tsecにしてi=i-1とする。
そうすれば、直接 if i <=10 then が使えます。 

 

コメント    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« データベースだけではない | トップ | 健康診断(歯科検査)システム... »
最新の画像もっと見る

コメントを投稿

Weblog」カテゴリの最新記事