アプリ版:「スタンプのみでお礼する」機能のリリースについて

度々お世話になっています。

表題の通りなのですが、料金フィールドがあります。
テキスト型で固定か料金の金額が入っているのですが、
レポートで数字は通貨型で表記したいと考えています。

数字以外の部分(今回なら固定)は、今後表記が変わったり増えたりする可能性があるので
条件に"固定"とは使いたくありません。

コントロールソースに
=iif(isnameric([料金a])=true,fomat([料金a],\\#,##0),[料金a])
このようにすると循環参照のエラーが起きてしまいます。
レポートのコントロールソースであるQ_契約状況を指定しても同じです(そりゃそうなのか・・)

テストでfalseの場合の処理部分を省くと全てが空白になってしまいます。
isnameric関数の考え方が変なのでしょうか。
ヘルプを見ましたが解決にはいたらなかったので、
アドバイスをお願いします。

A 回答 (7件)

> 料金aが変動、固定、個別とあり固定の場合は毎月決まった金額ですので集計が必要となっています。


> それを実現する為にiif関数でフィールドを1つにまとめ処理したクエリを
> レポートのソースにしています。

そのような仕様なら、一つのフィールドで処理しようとするは無理があると思います。

料金a は通貨型にして、別に 種別 というフィールドを追加するのがいいと思います。

種別 フィールドは下記のように設定します。

データ型 数値型
フィールドサイズ バイト型
ルックアップ
表示コントロール コンボボックス
値集合タイプ 値リスト
値集合ソース 1;"1変動";2;"2固定";3;"3個別"
連結列 1
列数 2
列幅 0cm

これで、種別フィールドで 1 と入力すれば 1変動、2で 2固定、3で 3固定 と表示されます。もちろんマウスでドロップダウンリストから選択してもOKです。

この方が入力もしやすいと思います。

レポートでは、詳細のテキストボックスのコントロールソースを下記のようにします。

=Choose([種別],Fomat([料金a],"\\#,##0"),"固定","個別")
「access テキスト型の数字の書式」の回答画像6
    • good
    • 0
この回答へのお礼

長い間お礼もせず申し訳ありませんでした。この業務自体がなくなってしまいました…
ただ今後も勉強を続けていきたいと思います。ありがとうございました。

お礼日時:2012/11/13 01:50

#3です。



まさか[テーブルorクエリ名]をそのまま使用してはいないでしょうね?
[テーブルorクエリ名]の部分は「参照しているテーブルorクエリ名」と置き換えてくださいね。
    • good
    • 0

> もしかするとグループフッターの部分に合計があるのでそれでかもしれません。


> 料金aの合計=Sum(Val(Nz([txt料金a])))
> コントロールソースにはこのようになっています。
> それから計算結果が0になってしまいました。\がついたのでValが数値を読めなくなったのかな。。。

Sumなどの集計関数の引数にはフィールド名を指定してください。

=Sum(Val(Nz([料金a])))

もし、テーブルに入ってるデータそのものに\がついているのなら、下記のように\を削除してから集計します。

=Sum(Val(Mid([料金a],2)))

\132,456 のようにカンマも入っているなら、

=Sum(Val(Mid(Replace([料金a],",",""),2)))


以下は別案ですので参考程度に。

金額 か"固定"の表示をさせたいのなら、
フィールドのデータは通貨型にして、書式プロパティを

\\#,##0;-\\#,##0;\\0;"固定"

とします。これで、数値を入力すれば通貨表示、
未入力(Null)なら「固定」と表示されます。

集計操作をするときに文字列を数値に変換して集計するより、数値のままのほうが高速に処理できます。

この回答への補足

>\\#,##0;-\\#,##0;\\0;"固定"

全く思いつかなかった方法でした。とても参考になりました。
ありがとうございます。

>\132,456 のようにカンマも入っているなら、
>=Sum(Val(Mid(Replace([料金a],",",""),2)))

補足をした後、=Sum(Val(Mid([料金a],2)))と取り出す方法を考えて実行しました。
カンマまでは気づかなかったです^^; 
ただ「抽出条件で型が一致しません」のエラーでした。

確かに今後データが増えたときも考えると処理速度は気になります。

もう少し詳細を説明させていただくと、毎月の状況の把握の為、レポートで出力するのですが、
料金aが変動、固定、個別とあり固定の場合は毎月決まった金額ですので集計が必要となっています。
それを実現する為にiif関数でフィールドを1つにまとめ処理したクエリを
レポートのソースにしています。

もっと賢いやり方があればアドバイスいただければ幸いです。

補足日時:2012/09/15 16:37
    • good
    • 0
この回答へのお礼

長い間お礼もせず申し訳ありませんでした。この業務自体がなくなってしまいました…
ただ今後も勉強を続けていきたいと思います。ありがとうございました。

お礼日時:2012/11/13 01:50

コーディングしなくとも



テキストボックスのプロパティーの書式タグで[通貨]と設定できます。
その他タグで ・IME入力モード(On,Off) ・IME変換モード(一般、人名/地名)
の設定も出来ます。

※テーブルのデザインで設定しておくとフォーム、レポートの
作成時に反映されます。

この回答への補足

回答ありがとうございます。
テーブルのフィールドとしてはテキストと数字の両方が存在するのでこのような形となりました。
フィールドの書式は通貨にしてみましたが、数字がテキスト型として認識されるようでしたので、
Format関数をと考えた次第です。循環参照のエラーは回避できたようです。

補足日時:2012/09/15 11:26
    • good
    • 0
この回答へのお礼

長い間お礼もせず申し訳ありませんでした。この業務自体がなくなってしまいました…
ただ今後も勉強を続けていきたいと思います。ありがとうございました。

お礼日時:2012/11/13 01:51

> isnameric関数の考え方が変なのでしょうか。


isnumericなのでは?

> =iif(isnameric([料金a])=true,fomat([料金a],\\#,##0),[料金a])
> このようにすると循環参照のエラーが起きてしまいます。
=iif(isnameric([テーブルorクエリ名]![料金a])=true,fomat([テーブルorクエリ名]![料金a],\\#,##0),[テーブルorクエリ名]![料金a])
とするとどうなりますか?

この回答への補足

ご指摘ありがとうございます!
お恥ずかしいことに3つも転機ミスがありますね・・・

コントロールソースとしてはちゃんと入力されてました^^;

>=iif(isnameric([テーブルorクエリ名]![料金a])=true,fomat([テーブルorクエリ名]![料金a],\\#,##0),
[テーブルorクエリ名]![料金a])
とするとどうなりますか?

指定してやってもみたのですが、パラメータの入力が求められたので困ってしまった次第です。
循環参照はなんとか回避できました。

補足日時:2012/09/15 11:29
    • good
    • 0
この回答へのお礼

長い間お礼もせず申し訳ありませんでした。この業務自体がなくなってしまいました…
ただ今後も勉強を続けていきたいと思います。ありがとうございました。

お礼日時:2012/11/13 01:51

> コントロールソースに


> =iif(isnameric([料金a])=true,fomat([料金a],\\#,##0),[料金a])
> このようにすると循環参照のエラーが起きてしまいます。

循環参照エラーなら、そのテキストボックスの名前が、「料金a」になっているのだと思いますので、
別の名前に変更してください。例えば「txt料金a」とか。

この回答への補足

あちらこちらでお世話になっております。
hatena1989様のご指摘通り「txt」をつけると循環参照のエラーはでませんでした。

しかし、パラメータの入力「txt料金a」が求められてしまいます。
何も入力せずにOKをするとほしい結果は得られました。

もしかするとグループフッターの部分に合計があるのでそれでかもしれません。
料金aの合計=Sum(Val(Nz([txt料金a])))
コントロールソースにはこのようになっています。
それから計算結果が0になってしまいました。\がついたのでValが数値を読めなくなったのかな。。。

補足日時:2012/09/15 11:35
    • good
    • 0

クエリで、


=iif(isnameric([料金a])=true,fomat([料金a],\\#,##0),[料金a])
のように書き換えて、それをレポートのレコードソースにするか、

モジュールにファンクションをつくり、レポートでそれを呼び出すか、、、

この回答への補足

ご回答ありがとうございます。
なかなかモジュールの作成レベルまで私が追いついておらず、
踏み込めない状態です(涙)

クエリで式も考えたのですが料金a自体がすでに式になっていて、
自分でややこしくなるなーと思ったのでレポートでの書式にしたいと思いました。

循環参照はなんとかエラーが出なくなりました・・・けど・・・といったところでしょうか。

もうひとがんばりしてみます。

補足日時:2012/09/15 11:39
    • good
    • 0

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