Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Pro : Access 2013)
クエリで時刻表示を数値表示に変換したい。
投稿日時: 20/09/28 13:49:59
投稿者: tekuteku5050

お世話になります。
 
あるExcelシートをインポートしたテーブルの作業時間フィールドに00:15、05:45、30:00などの時刻表示(文字列)のデータがあります。これをクエリの抽出条件で、00:15→0.25、05:45→5.75、30:00→30.00という数値に変換したいのですが、下記式では、30:00だけが#エラーとなります。
 
作業h: IIf([作業時間] Is Null,Nz([作業時間]),CDate([作業時間])*24)
 
時刻表示を数値に変換する記述をご教授願います。
 
ちなみに時刻表示が、23:59までの値なら上手く変換できます。24:00以上になるとエラーになります。

回答
投稿日時: 20/09/28 14:40:07
投稿者: Suzu

確認から。
[作業時間]フィールドのデータ型は、文字列フィールドなのですよね。
 
で、欲しいのは、数値型なのですよね?
 
提示された数式では、CDATEを使い 日付時刻型に変えているのでは?
そもそも、小数点にて処理したいのに、日付時刻型に変えても面倒なだけです。
 
 
作業時間フィールドは「:」を含め 5桁の固定であるなら
左側2桁を整数部
右側2桁を小数部 となる様にすれば良いですよね
 更に 小数部は、得られた数値/60 にて 換算 15→0.25、30→0.5、45→0.75 になります。
 
整数部 は LEFT([作業時間],2)
小数部 は RIGHT([作業時間],2)/60
 
得られた 整数部 小数部 を加算すれば良いですよね。

投稿日時: 20/09/28 15:40:07
投稿者: tekuteku5050

Suzu様
回答有難うございます。
 
>作業時間フィールドは「:」を含め 5桁の固定であるなら
データ型は文字列ですが、表示パターンが下記のようになっております。
 
1:45:00、1:45、17:15:00、17:15
 
Excelシートは、1:45、17:15の2パターンなんですが、テーブルとしてインポートされると上記の
4パターンになっているようです。
「:」の文字を起点にして左側文字、右側文字として取り出せると良いのですが、記述方法が良く
分かりません。
他に良い記述方法はございますでしょうか?
 

回答
投稿日時: 20/09/29 08:47:46
投稿者: Suzu

引用:
「:」の文字を起点にして左側文字、右側文字として取り出せると良いのですが、記述方法が良く
分かりません。

 
InStr([作業時間],":") にて、「:」の位置を取得できます。
 
その値に -1 の値と RIGHT関数
         +1 の値と MID関数

投稿日時: 20/09/29 11:18:34
投稿者: tekuteku5050

Suzu様
 
お世話になっております。
早速のアドバイス有難うございました。
貴殿のコメントをヒントに下記記述で上手くいきそうです。
 
作業h: IIf([作業時間] Is Null,0,Left([作業時間],InStr([作業時間],":")-1)+Mid([作業時間],InStr([作業時間],":")+1,2)/60)
 
大変助かりました。
どうもありがとうございました。