Microsoft Access Club >Access裏技Tips >このページ >次頁 < 前項 サイト内検索


60秒間経過すると自動的にフォームを閉じる : Access裏技Tips



入力中に席を立ってそのまま放置するユーザーには困ったものです。 ここでは、新規レコード以外で60秒間経過すると自動的にフォームを閉じる技を紹介します。

自動的にフォームを閉じる

  1. サンプルテーブル(tbl_sample)をもとに単票式の売上高入力フォーム(frm_sample)を作成します。
  2. フォームフッターに経過時間を表示するテキストボックス(txt時間)を作成します。
  3. フォームを開いた時間を基点に、タイマ時イベントを利用して1秒間隔で残り時間を減少させます。
  4. 60秒経過して、新規レコード画面でなければ自動的にフォームを閉じます。

売上高入力フォームの作成

  1. サンプルデータをもとに売上高入力フォームを作成します。
  2. フォームフッターにテキストボックス(txt時間)を作成します。

フォームのイベントプロシージャの宣言セクションに変数の作成

フォームのイベントプロシージャの宣言セクションに変数を作成します。

Option Compare Database
Option Explicit

Dim dattime As Date
    
Const Con終了 = "00" & ":" & "01" & ":" & "00" ' --- A
解説
  1. フォームが開いている間、値を保持するために宣言セクション内に変数を定義しています。60秒後にこのフォームを閉じます。

SubプロシージャSeteiの作成

SubプロシージャSeteiを作成します。

Sub Setei()

    Me.TimerInterval = 1000 ' --- A
    dattime = Time……B
    Me.txt時計 = TimeValue(Con終了) '時刻型に変換します。 ' --- B
    
End Sub
解説
  1. TimerInterval/タイマ間隔プロパティを用いて、1000ミリ秒に設定します。
  2. 変数dattimeにTime関数を用いてシステム時刻を代入します。
  3. TimeValue関数を用いて定数Con終了を、時刻を表す0:00:00形式に変換しています。
今回のおすすめポイント

Subプロシージャ

今回のようにフォームのイベントプロシージャ内部にSubプロシージャを作成することができます。
Subルーチン化すると呼ばれることもありますが、繰り返し作業などを分散し再利用するために作成しています。

タイマ時イベントプロシージャの作成

タイマ時イベントプロシージャを作成します。

Private Sub Form_Timer()

    Dim dattimevalue As Date
    dattimevalue = Time - dattime ' --- A

    Me.txt時計 = TimeValue(Con終了) - dattimevalue ' --- B
    
    If Me.txt時計 <= 0 Then ' --- C
        If Me.NewRecord = True Then ' --- D
            Call Setei ' --- E
        Else
            DoCmd.Close ' --- F
        End If
    End If
    
End Sub
解説
  1. 変数dattimevalueに、その時々のシステム時刻(Time)からフォームを開いた時刻を引きます。
  2. フォーム上にあるテキストボックスtxt時計に、残り時間を表示します。
  3. 残り時刻がマイナスになると、以下の処理に移行します。
  4. NewRecordプロパティを用いて、新規レコード画面が開かれているなら以下の処理を実行します。
  5. SubプロシージャSeteiを実行します。
  6. フォームを閉じます。
今回のおすすめポイント

NewRecordプロパティ

NewRecordプロパティは、新規レコード画面が開かれているならTrueを返します。

フォームを開く時イベントプロシージャの作成

フォームを開く時イベントプロシージャを作成します。

Private Sub Form_Open(Cancel As Integer)

    Call Setei ' --- A
    
End Sub
解説
  1. Call関数でSubプロシージャSeteiを呼び出します。

レコード移動時イベントプロシージャの作成

レコード移動時イベントプロシージャを作成します。

Private Sub Form_Current()

    Call Setei ' --- A
    
End Sub
解説
  1. Call関数でSubプロシージャSeteiを呼び出します。

閉じる時イベントプロシージャの作成

閉じる時イベントプロシージャを作成します。

Private Sub Form_Close()

    Me.TimerInterval = 0
        
End Sub
解説
  1. TimerIntervalプロパティを0に設定します。

動作確認

  1. デザインビューからフォームビューに切り替えます。
  2. 60秒後にフォームが自動的に閉じます。


関連ページ

ページの先頭へ 前ページへ戻る

 


60秒間経過すると自動的にフォームを閉じる : Access裏技Tips


 

-Microsoft Access Club-

動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。データセンター設置場所はアメリカ合衆国です。: 動画サーバードットコム
動画配信(ダウンロード、ストリーミング)対応の専用レンタルサーバー。
データセンター設置場所はアメリカ合衆国です。
100Mbps〜1Gbpsまで対応できます。