当方ガソリンスタンドで、顧客向け請求書を発行できるよう作成中です。
レポートの明細(詳細セクション)でレギュラーガソリン等の燃料油なら数量の表示を小数点以下2桁表示に、
それ以外の商品(タイヤ等)なら数量の表示を整数表示にするにはどうすればいいのでしょう?
通報 ...
当方ガソリンスタンドで、顧客向け請求書を発行できるよう作成中です。
レポートの明細(詳細セクション)でレギュラーガソリン等の燃料油なら数量の表示を小数点以下2桁表示に、
それ以外の商品(タイヤ等)なら数量の表示を整数表示にするにはどうすればいいのでしょう?
表示用にテキストでデータを作る。かな
修正修正を重ねたらやっぱり間違ってるし
※不要な「)」が残ってました
数量の表示: Left([丸めた数量])+0.001,InStr([数量] & ".",".")+IIf([商品区分]="燃料油",2,-1))
さらに修正・・・
[丸めた数量]
と[数量]
は例えば[数量]
が9.999
のとき[丸めた数量]
が10
となって桁が変わる可能性があるので横着せず両方とも[丸めた数量]
を使う必要がありました意図せず記述してましたが、
[丸めた数量]
はやっぱり別フィールドにして計算させておいた方がよさそうですねhirotonさん、すばらしいです!希望通りの表示になりました。ありがとうございます。ただ私のレベルでは、この式を紐解くのは無理なようです。ぜひ詳細なご説明をお願いいたします。
欲を言いますと、整数が右詰になってしまい、燃料油の少数第二位の位置に表示されます。
レギュラー 23.56ℓ
タイヤ 4本
ではなく
レギュラー 23.56ℓ
タイヤ 4 本
と整数の位置に表示できないでしょうか?
ACCESS標準の書式設定ではちょっと難しい案件なので文字として整形してしまいます
登録するデータはある程度入力ルールが決まっていると思いますが、単純に数値とするといろいろな入力が考えられます
ほしい結果は2パターンで
Ⅰ:先頭から小数点の前の文字まで
Ⅱ:先頭から小数点の2文字先まで
先頭から文字列を抜き出せばいいので
Left
関数を使ってそれぞれを作ります
基準の文字列
文字列として処理するので丸め処理をした数値を基にします
注意が必要なのは、上記A、Cパターンで、小数点以下2桁までほしいのに文字列としては桁数が足りません。そこで、元の数値に影響なく、桁が足りないデータに対しては0で埋められるように
[丸めた数量]+0.001
と計算させています。丸め処理済みであれば数値のない小数点以下第3桁に1を加えても影響がでません逆に丸め処理が済んでいない場合、例えばEパターンにこのような計算式を当ててしまうと基にすべき数値が変わってしまうので注意が必要です
先頭から小数点
InStr
関数で文字位置を調べればいいですね。ただし、整数のデータには小数点がないので、小数点があると仮定した位置を返すように、[丸めた数量] & "."
を元のデータとして"."
を探すようにしますの2文字先まで/の前の文字まで
単純に
+2/-1
でいいので、これをIIf
関数で条件を付けて切り替えます単位をどう表示するかも悩ましいところですが、文字位置は使っているフォントで調整が必要になったりするのでとても難しいですね
整数表示(右詰め)、小数部表示(左詰め)とテキストボックスを2つ並べてしまうのが簡単だと思います
やっぱり計算式間違いやってるやーつ・・・
誤
小数部表示:IIf([商品区分]="燃料油",Mid([丸めた数量]-Fix([丸めた数量]+0.001),2,3))&[単位]
↓
正
小数部表示:IIf([商品区分]="燃料油",Mid([丸めた数量]-Fix([丸めた数量])+0.001,2,3))&[単位]
実際にACCESS触らず手打ちでやってるとイカンなやつでした
hirotonさん、貴重なお時間を使わせてしまって、本当にありがとうございました。
整数と小数を分けて取出して表示する方法は、下記の通り私も作っていたのですが、どうにも安っぽいやり方に思えて長年モヤモヤしていました。
整数部:fix([数量]
小数部:IIf([商品区分]="燃料油", Format([数量]-[整数部],"#.00"),""))
Left関数とinStr関数の組み合わせで表示できるとは、hirotonさんにあらためて感謝申し上げます。
当初、表示を分ける必要がなかったので整数部と小数部をまとめて処理するために
Left
,InStr
の組み合わせにしたんですけど、最終的な目的から見ればすでにやってる方法で問題ないと思いますよACCESSは実に安いソフトなので、安っぽい方法で目的が達成できたのなら喜びましょう
軽く触れましたが、文字(文字列)の表示は非常に高度な問題です。ACCESSはかなり苦手とする部類で、「レポートの表示だけでいい」のならある程度力業を組み合わせてしまったほうがすんなりいくものです