1/14/2020

Access。Excel同様に、Accessも時給計算(時間計算)は苦手です。【Hourly wage calculation】

Access。Excel同様に、Accessも時給計算(時間計算)は苦手です。

<Access>

Excelで時給計算(時間計算)をするのは、簡単そうに思えますが、表示形式を変更しなくちゃいけなかったり、24倍しないといけなかったりと、面倒です。

では、Accessでは、どうなんでしょうか?

次のテーブルを用意しました。

出勤と退勤のフィールドを用意しています。

データ型はともに、「日付/時間型」で設定しています。

退勤-出勤の演算フィールドをつくれば、何時間勤務したのかが算出されるはずですね。

では、クエリをつくっていきます。
勤務という演算フィールドを作成しました。

退勤から出勤を減算しています。では、実行して確認してみましょう。

なんか、とんでもない数値が算出されてきました。

Excelでの経験だと、表示形式が数値になっているからだろうと推測することができますので、プロパティシートで、書式と定型入力を設定したとします。

演算フィールドをクリックしておいて、プロパティシートをクリックします。

プロパティシート作業ウィンドウが表示されたらば、書式を「標準」にして、定型入力には、「09\:99;0;_」と入力します。

または、ビルドボタンをつかい、定型入力ウィザードで設定してもOKです。

設定後改めて、実行してみましょう。

とんでもない状態からは脱出することができましたが、よく考えてみると算出されたのは、標準のままで時間表示になっていません。

Accessは、CDate関数というデータ型を変更する関数を使用しないと、演算フィールドの結果をうまく表示することができません。

なので、演算フィールドは次のように修正します。

勤務CDate: CDate([退勤]-[出勤]) という演算フィールドをつくりました。

実行して確認してみると、時間の形式で算出されています。

このように、時間計算をするときには、CDate関数というのを覚えておくといいようですね。

なお、形式を変更するには、【FormatDateTime関数】というもう一つ関数がありますが、この関数を使って算出してみると、

算出はされるのですが、数字文字列になってしまうので、CDate関数のほうがいいように思われます。

なお、FormatDateTime関数をつかった演算フィールドは、次のようにしました。

勤務format: FormatDateTime([退勤]-[出勤])

【時間合計を算出するクエリ】
勤務時間が算出できたので、時間合計を算出するクエリをつくってみましょう。

集計するには、集計行を表示させる必要がありますので、クエリツールのデザインタブにある集計ボタンをクリックします。

実行してどうなったのかを確認してみましょう。

ありゃま。これまた、とんでもない数値が算出されてきましたね。

そう、これは、Excelの時間計算でお馴染みの現象ですね。

時間を合算させただけなので、24倍しないと、標準になりませんので、演算フィールドを修正する必要があります。

勤務時間合計: [勤務CDate]*24 と演算フィールドを作りましたので実行して確認してみましょう。

これで、時間合計を算出することができました。

Accessだったら、簡単になるかと思ったら、やることは、だいたい同じ処理をしないといけないようですね。