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

Accessの数値から時間に変換する時点で困っています。
仕事の作業上にて、フォームの計算式にて5.25という数値が出ています。
それを5.25→05:15という時間の数字に変換したいのですが、方法がわかりません。
書式設定で可能なものなのか、それとも別のボックスに関数を使用した式をいれればできるのか……ぜひとも教えていただけるよう、よろしくお願い致します。

A 回答 (3件)

私自身はAccess上で日付の演算をすることが殆ど


ないのですが・・・(汗)

> 5.25→05:15という時間の数字に変換したい

テキストボックスの書式などでやってみたところ、どうも
「5.25→5:25」とされてしまうです。

ですので、KIG_4さんご自身が考えたとおり、
> 別のボックスに関数を使用した式をいれ
て、対応するしかないと思います。
(同じ数値を、書式設定だけで「5:15」と「5:25」という
 異なる意味の数値に切り替えられるとは考えにくいので)

但し、関数による計算結果を表示する場合、
そのテキストボックスは編集不可(=表示専用)となって
しまいますので、ご注意下さい。

新規テキストボックスに設定する式としては、
 =Format(CDate([元のテキストボックス]/24), "hh:nn")
になります。

【式の説明】
日付/時刻関連の関数は「整数の1」=「1日」の扱いと
なります。
そのため、まず「5.25」を24で割って「1日(=24時間)の
何分の1に当たるのか」を算出します。
次に、CDate関数を使用して、Accessに、この演算結果
の小数を日付/時刻として認識させます。
最後に、Format関数で、「05:15」の書式で表示させて
います。
(「hh」で時間(Hour)を2桁表示、「nn」で分(miNute)も
 2桁表示、と指定)

※「分」が「m」ではないのは、通常、月(Month)の方に
 割り当てるためです。
 但し、今回の場合は「"hh:mm"」と指定しても、一応
 正しく「分」として表示されます。
 (「時」と「月」のみを組み合わせて扱うことは通常はない
  ので、その場合は「m」を分として扱うロジックが上記
  関数の内部に組み込まれているものと思います)
    • good
    • 0
この回答へのお礼

DexMachinaさん。
回答、ありがとうございます!
すごく、参考になりました。
パスワードが不明になり、お礼が遅れ申し訳ありませんでした。

皆さんの回答を参考に、めっちゃスマートではないのですが完成することができました。
「5.25」をIntの切捨てを使い「5」を算出。
そこから元の数字の「5.25」-「5」で「0.25」を算出。
「0.25」×60分=15
「5」と「15」を時間に直し、足し算にて「5:15」という形式にできました。
皆さんの回答、本当にありがとうございました!!

お礼日時:2010/06/24 11:59

設計思想としては邪道かもしれませんが、難しく考えないで


数値
0・・・25・・・50・・・75・・・100
に対応する分算出テーブル
0・・・15・・・30・・・45・・・60
を作りリンクさせるのが簡単で早いです。
これで確実に不具合なく機能するものをまず作って、
書式なり関数なりでかっこよく?整えるのが良いと思います。
    • good
    • 0
この回答へのお礼

どうもlavvさん。
回答ありがとうございます!
一応、下記のやり方で対応することにしました。
スマートではないのですけどね(汗)
ご協力、ありがとうございます!

お礼日時:2010/06/24 11:51

文字列に、変換するためには、


Function ConvtDecToHM(strDec) As String
ConvtDecToHM=Format(TimeSerial(Int(strDec), Int((strDec - Int(strDec)) * 60), 0), "HH:MM")
end function
のような関数を作るのが手軽です。
    • good
    • 0
この回答へのお礼

ShowMeHowさん。
回答ありがとうございました!
関数の作成、までは知識が不足しており、理解できませんでした(涙
しかし、文中にありました式を参考になんとか対応することができました。
ご協力、ありがとうございます。

お礼日時:2010/06/24 11:52

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

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

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


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