- ベストアンサー
アクセスのフォームで、元のフィールドが空白なら"-"印を表示したい
アクセスで見積書を作成しているのですが、 テーブルに品種、品名と定価のフィールドがあり、 定価は通貨型になっています。 フォームに、選択した品名と定価が表示されるようにしています。 (選択するだけではなく入力もできるようになっています) この時、テーブルに定価が入力されていない項目があり、その場合には -印を表示させ、印刷結果にも同じように-印が入るようにしたいのですが、 何か方法がありますでしょうか? テーブル、フォームで-印を入力すると、 「フィールドに入力した値が不正です」というメッセージが出ます。 これはデータ型を通貨型にしているから、というのは判っているのですが、 できれば通貨型を保ったまま-印を入力したいのです。 使用しているのはWindows98,Accsess97です。 ご存知のかた、よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
表示のみならば、フォーム・テーブル共に、書式(Format)プロパティの第四セクションに"-"を指定すれば、Nullの時に-印が表示されます。 正の時;負の時;0の時;Nullの時 \#,##0;\-#,##0;\0;"-" maruru01の言われている入力時の複雑な処理とは、私の思うところでは、テキストから数値への変換には、Val関数を使用されると思いますが、この関数は文字列中に数字以外の文字が見つかると、読み込みを中止します。 そして、通常は数値の一部とみなされる円記号 (\) やカンマ (,) などを数値として解釈しません。 従いまして、まず、入力された文字をチェックし、妥当な変換を行なう必要が出てきます。 通常は自動的にチェック・変換してくれる所を、自分自身でコーディングする必要があることをさされていると思います。 きちんとコーディングすれば、出来ない事ではありませんが、成果より実りが少ないと思われます。 それよりも、表示のみとし、入力は0を入力してもらうほうがよろしいのでは?
その他の回答 (1)
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 印刷の場合は、レポートで定価表示用の非連結のテキストボックスを用意するという方法があります。 テーブルのフィールドと連結したテキストボックスを、[txt定価]、表示用のテキストボックスを、[txt定価表示]とします。 [txt定価]の可視プロパティを「いいえ」にし、レポート詳細エリアの邪魔にならないところに置いておきます。(どうせ不可視なので、大きさや位置はどうでもいいわけです。) [txt定価表示]を表示させたい大きさと位置に置きます。 で、レポートの詳細のFormatイベントに以下のように書きます。 Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer) If IsNull(Me!txt定価.Value) Or Len(Me!txt定価.Value) = 0 Then Me!txt定価表示.Value = "-" Else Me!txt定価表示.Value = Me!txt定価.Value End If End Sub ところで、入力フォームでは"-"表示する必要はないんじゃないでしょうか。 レポートは表示するだけだから簡単ですが、フォームでは入力や取り消しとかもするので、結構複雑な処理になりますよ。
お礼
早速のご回答、ありがとうございます! レポートの表示は、教えていただいた方法でうまくいきそうです。 フォームなのですが、この作業を依頼して来た人は、フォームに 表示してほしいということなのです。 アクセスはまったく初心者でほとんど何もわからないのですが、 複雑な処理とは、どのくらい複雑になってしまうものなのでしょうか? レポートの詳細に書いたものよりだいぶ長くなってしまいますでしょうか。
お礼
ご回答ありがとうございます! アクセスの書式プロパティはエクセルの表示形式とは項目が 違うのですね!これで思っていたように表示することができました。 複雑な処理も、とてもわかりやすく、勉強になりました。 今のスキルではまだまだこういうことはできないです…。 また何かわからないことがあれば、よろしくお願いいたします。