プロが教えるわが家の防犯対策術!

Accessのフォーム上で開始時間1というテキストボックスと終了時間1というテキストボックスがあります。
データ型は日付・時刻型です。
24時間表記で終了時間が26時の場合は2時と入力しています。
入力する際はそれで構わないのですが、
それをレポートとして印字する時に26時と印字されるようにはならないでしょうか?
開始時間1と終了時間1を比べて開始時間1のほうが大きければ終了時間1は24足した数字を表示したいのですが、うまく書けません。
よろしくお願いします

A 回答 (5件)

レポートにテキストボックスを配置して、コントロールソースに


=([終了時間1]-([終了時間1]<[開始時間1]))*24
のような式を設定するとか。関数は不要です。
「26」のような数値が表示されるはずですので、書式プロパティに
「#\時」とでも設定しておけば、「26時」と表示させることが
できるでしょう。
テキストボックスの名前は「終了時間1」や「開始時間1」と
カブらない別の名前にしてください(でないと循環参照が発生
しますので)。

なお、TimeDiff() を使うなら、
=TimeDiff([終了時間1]-([終了時間1]<[開始時間1]))
のような式を設定すれば「26:00:00」のようには表示できます。
ただし「26時」の表示形式にはなりませんので、今回の場合は
微妙にニーズとマッチしないかも。
TimeDiff() も使いどころにハマれば便利な関数だと思いますので、
機会があればご利用ください。

この回答への補足

ありがとうございます。
思ったより簡単な式で何とかなるのですね!
驚きです。

なのですが、もうひとつ教えて頂きたいことが…

テキストA(終了時間) = ([終了時間1]-([終了時間1]<[開始時間1]))*24
ここには26時と表示されるのですが、

もうひとつ[開始時間2][終了時間2]という項目があって、

テキストB(開始時間) = ([開始時間2]-([開始時間2]<[テキストA(終了時間)])*24

という風にするとすべてに24が足されてしまいます。

つまり
終了時間1が22時の場合テキストA(終了時間)には22と表示され、
開始時間2が23の場合、そのまま23と表示させたいところ、
この式だと47となってしまうのです。

純粋にテーブルからデータを入れたテキストボックスを参照していないからかな?と思ったりするのですが、
何か解決策を教えていただければありがたいです。

補足日時:2009/03/26 21:58
    • good
    • 0

試してみました


Private Sub 時刻x_LostFocus()
Me.テキスト2 = Me.時刻x - Me.時刻
If Me.テキスト2 < 0 Then
Me.テキスト2 = Me.テキスト2 + 1
End If
End Sub
関数など使わずに済むみたいです。
    • good
    • 0
この回答へのお礼

ありがとうございます。

できればプロパティのコントロールソースで何とかならないかな?
とは思っていましたが、
こういった方法もあるのですね。

今後の参考にしたいと思います。

お礼日時:2009/03/26 22:03

>=iff([開始時間1]>[終了時間1],[終了時間1]+24,[終了時間1])


日付時刻型は内部は実数で、整数部分が日付(日単位)、小数部が
時刻を表しています。”[終了時間1]+24”これは24日後を意味
します。単位別の計算はDateAddを使います。
http://msdn.microsoft.com/ja-jp/library/cc410235 …

ところで、「2時」が26時なのか、ただの2時なのかはどうやって
判定するんでしょう?日付の部分も必要なきがするんですが・・・
    • good
    • 0
この回答へのお礼

ありがとうございました。
2時か26時かは左側と右側を比べて、
22~2 ← 26時
1~2  ← 2時 
と判断しようと思っています

お礼日時:2009/03/26 22:01

どううまく書かれないのか?内容が書いていないので


今されている事が解りませんが
If Me.開始時間1 > Me.終了時間1 Then
MsgBox (DatePart("h", Me.終了時間1) + 24)
End If
これは、フォームに開始時間1、終了時間1を時刻の書式で
入力させ、ボタンクリック時 お望みの 26と言う数値を
表示させた場合です。
参考になれば。
    • good
    • 0
この回答へのお礼

ありがとうございます。

できればプロパティのコントロールソースで何とかならないかな?
とは思っていましたが、
こういった方法もあるのですね。

今後の参考にしたいと思います。

お礼日時:2009/03/26 22:04

こちらの Timediff 関数でご希望のことができると思います。


http://www.f3.dion.ne.jp/~element/msaccess/AcTip …
    • good
    • 0
この回答へのお礼

ありがとうございます。

このページは私も見て、使えるかも!?
と思ったのですが、実際どのように書けばよいのかわかりませんでした。

たとえば
=iff([開始時間1]>[終了時間1],[終了時間1]+24,[終了時間1])

このような感じで考えたのですが、+24をの部分にTimeDiffを使うのでしょうか?

お忙しいところ恐縮ですが、教えていただければ幸いです。

お礼日時:2009/03/17 23:04

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A