本ページは公開が終了した情報の複製であり、掲載時点での情報です。本ページに記載されている内容について各所に問い合わせることはご遠慮下さい。
サポート技術情報

[ACC2] 日付/時刻型データから経過時間を算出する方法

文書番号: 402687

最終更新日: 1997/11/01


この資料は以下の製品について記述したものです。

この記事は、以前は次の ID で公開されていました: JP402687

概要

日付/時刻型データの有効範囲は、0:00:00 ~ 23:59:59 または 12:00:00 a.m. ~ 11:59:59 p.m.です。
2 つのデータの経過時間を算出した場合 23:59:59 以上のときには日付/時刻型では表示することができません。ここでは、日付/時刻型データ間の経過時間を算出し、結果の値をテキスト型で表示させるサンプルプロシージャを紹介します。
なおこのサンプルプロシージャは、ユーザー定義関数としてクエリー、フォーム、レポートで利用できます。

現象

■ プロシージャの作成

  1. データベース ウィンドウで [ファイル] - [新規] - [モジュール] コマンドを選択するか、データベース ウィンドウの <モジュール> ボタンをクリックし、<新規作成>ボタンをクリックします。
  2. [編集]-[新規プロシージャ] コマンドを選択するか、ツールバーの <プロシージャ作成> ボタンをクリックします。
  3. [プロシージャの新規作成] ダイアログ ボックスで [種類] で"Function"を選択します。
    [名前] でプロシージャ名 (PassTime) を入力します。
  4. 以下のサンプルプロシージャを入力します。

■ サンプルプロシージャ

日付/時刻型データは、時刻を表わします。20:15:00 ならば、20 時間 15 分 00 秒という時間ではなく、20 時 15 分 00 秒という時刻を表わします。
よって 2 つの日付/時刻型データから算出した経過時間は、日付/時刻型フィールドに格納できません。プロシージャの戻り値の経過時間はテキスト型データにします。
  --------------------------------------------------------------------------
  '  引数: Time1(開始時刻)
  '        Time2(終了時刻)
  '戻り値:テキスト型の経過時間
  Function PassTime(Time1, Time2) As String
      Dim dt As Long
      Dim h As String
      Dim m As String
      Dim s As String
      dt = Abs(DateDiff("s", Time1, Time2))
      h = Format(dt \ 60 ^ 2, "00")
      m = Format((dt Mod 60 ^ 2) \ 60 ^ 1, "00")
      s = Format(((dt Mod 60 ^ 2) Mod 60 ^ 1) \ 60 ^ 0, "00")
      PassTime = h & ":" & m & ":" & s
  End Function
  --------------------------------------------------------------------------

■ サンプルプロシージャの実行

作成した PassTime プロシージャが正しく動作するかどうかを確認します。ここでは PassTime プロシージャをクエリーで使用し、経過時間を算出します。
  1. 下記の [タイムカード] テーブルを使用します。
    [GRAPHIC: ]
  2. [タイムカード] テーブルを元にクエリーを新規作成します。
    次に [タイムカード] テーブルのデータを更新するフィールドを QBE グリッドにドラッグします。
  3. [クエリー] - [更新] コマンドを選択するか、ツールバーの <更新クエリー> ボタンをクリックします。 QBE グリッドに [レコードの更新:] の行が表示されます。
  4. [就業時間] フィールドの [レコードの更新:] の行に、経過時間を算出するPassTime プロシージャを設定します。
    [GRAPHIC: ]
              フィールド:就業時間
          レコードの更新: PassTime([開始時刻],[終了時刻])
    
  5. [クエリー] - [実行] コマンドを選択するか、ツールバーの <実行> ボタンをクリックすると下記のメッセージボックスが表示されます。
    [GRAPHIC: ]
  6. メッセージボックスの OK を押してレコードを更新します。
    [タイムカード] テーブルを開くと [就業時間] フィールドに、PassTime プロシージャで算出した値が表示されます。

Keywords: KBHOWTO KB402687
Technology: kbAccess200 kbAccessSearch

inserted by FC2 system