• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:アクセスの時間計算について)

アクセスで勤務時間表を作成する方法と時間計算について

このQ&Aのポイント
  • マイクロソフトアクセスを使用して勤務時間表を作成する方法について質問があります。現在、テキスト型のフィールドに勤務時間を入力していますが、合計時間を算出するためには数値型のフィールドが必要です。
  • テキスト型のフィールドでは数値の加算や計算ができないため、数値型のフィールドを使用する必要があります。しかし、数値型のフィールドでは「0:00」などの時間表記ができません。
  • アクセスで時間の計算をする場合は、数値型のフィールドを使用して勤務時間を入力し、合計時間を算出することができます。ただし、時間表記に制約があるため、一部の表示が制限される可能性があります。

質問者が選んだベストアンサー

  • ベストアンサー
noname#140971
noname#140971
回答No.6

補足:XDate関数、XTime関数は邪道。 そもそも、時間と時刻とは全く異なる概念。 時間は量を持っていますが、時刻には量は存在しないことは明らか。 ここを混同してシステムを組むことが間違い。 それは、社内で広く認知される考え方ではないでしょう。 例え、XDate関数、XTime関数で合計計算は出来たとしても何の意味もありません。 <勤務時間管理は時刻管理ではなく量としての時間管理> この基本に立ち戻ることが必要と思います。 ※XDate関数、XTime関数を示しておいてなんですが・・・。 ※<質問を見てやおら作成>=無用な関数だからです。

その他の回答 (5)

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.5

>ページフッタのところに、テキストボックスを設置し、 >その中に「sum=[残業時間]」と入力しましたが、 ページフッターでは集計関数は使えません グループフッターまたはレポートフッターで集計します >1:00+1:00=2:00というような計算をアクセスでする場合にはどのようにしたら 日付時刻型を時間計算に流用したとしても 時刻には24:00以上はありませんから24時間以内の表示しかできませんよ 数値型で計算を行いそれをxx:xxのような文字列に変換することになります

noname#140971
noname#140971
回答No.4

tab1: ID___日付___________出勤時間 1____2008/01/01__12:00 2____2008/01/02__11:00 3____2008/01/03__09:00 4____2008/01/09__00:01 このように出勤時間をHH:MM形式の文字列で入力すると仮定します。 一応、’25:00’との入力もOKということにします。 クエリ1: 合計出勤時間 32:01 SELECT XferHHMM(Sum(XferDAte([出勤時間]))) AS 合計出勤時間 FROM tab1; さて、これがクエリで[合計出勤時間]を求めた結果です。 一応、欲する結果であると思います。 [イミディエイト] ? XferHHMM(XferDate("12:00")+XferDate("11:00")) 23:00 ? XferHHMM(XferDate("23:00")+XferDate("09:00")) 32:00 ? XferHHMM(XferDate("32:00")+XferDate("00:01")) 32:01 クエリの計算過程を再現すればこのようです。 要は、日付型にして計算してはHH:MM形式の文字列に直して対応しているということです。 Public Function XferHHMM(ByVal dteHiduke As Date) As String   Dim dteYYYYMMDD As Date   Dim HH     As Integer      dteYYYYMMDD = CDate(Format(dteHiduke, "yyyy/mm/dd"))   HH = Left$(Format(dteHiduke, "hh:mm:ss"), 2) + DateDiff("d", "1899/12/30", dteYYYYMMDD) * 24   XferHHMM = Trim(Str(HH)) & Right$(Format(dteHiduke, "hh:mm"), 3) End Function Public Function XferDate(ByVal strHHMM As String) As Date   XferDate = CDate(Format(DateAdd("d", Left$(strHHMM, 2) \ 24, "1899/12/30"), "yyyy/mm/dd ") & _         Format(Left$(strHHMM, 2) Mod 24, "00") & Right$(strHHMM, 3)) End Function 片田舎の工場の一介の工員です。 ですから、これが最適な解決方法かどうかは甚だ自信がありません。 ましてや、質問を見てやおら作成した関数です。 参考程度にされてください。

noname#79209
noname#79209
回答No.3

ページフッタにおいているというのも、別の意味で気になりますが... 「残業時間」というフィールドは、レポート上のコントロール名として存在するのでしょうか?

tora_mike
質問者

補足

残業時間フィールドは詳細上に存在するフィールドです。 ちなみに上記のご指摘があったのでレポートヘッダーに移動したところ0.170138888889という値が入りました。

noname#79209
noname#79209
回答No.2

まず、質問時のタイプミスでなければ「sum=[残業時間]」が間違っています。 「=sum([残業時間])」です。 > 指定した式の構文が正しくありませんと表示されます。 というのは、上記が原因でしょう。 また、 > 入力するフィールドの種類は、テキスト型で入力しています。 これが、「テーブルへ直接入力している」という意味なら、 テーブルのフィールドは日付/時刻型で定義しておくべきです。 そうではなく、フォームで入力してるなら、 「テキスト・ボックス」とはいうものの、データ型はバリアントです。

tora_mike
質問者

補足

日付/時刻型にしてもエラーが表示されます。 ビュー表示にしたところ「#エラー」と表示されます

  • falst
  • ベストアンサー率33% (16/48)
回答No.1

>その中に「sum=[残業時間]」と入力しましたが、 =Sum([残業時間]) ではないでしょうか?

tora_mike
質問者

補足

大変失礼しました。 ご指摘の=Sum([残業時間])と入力しましたが、しかし、レビューするとエラーと表示されます。

関連するQ&A

専門家に質問してみよう