• ベストアンサー

access 通貨型 表示桁数 4捨5入 誤差

データ型 「通貨型」  表示桁数「自動 又は、0」指定 入力値 123.5 表示は 124となります。 その項目を2倍すると 247と なります。 248とはなりません。 入力値を整数にする(少数以下が入力できないようにする) 入力規則はどうしたらいいでしょうか。 

質問者が選んだベストアンサー

  • ベストアンサー
  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.2

是非はおいておくと、入力規則 = INT([フィールド名]) で可能です。そのフィールド名が Num なら、 デザインモードでテーブルを開き、Num フィールドの プロパティー欄で入力規則を設定します。

k7qa170622
質問者

お礼

本当にありがとうございます。 フィールド名 通貨型てすと 入力規則に =Int([通貨型てすと]) で 123.5と入力すると エラーメッセージを出してくれます。 123 や -123は大丈夫です。

その他の回答 (1)

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

データ型 「通貨型」  表示桁数「自動 又は、0」指定 入力値 123.5 表示は 124となります。 その項目を2倍すると 247と なります。 248とはなりません。 そうなります。見た目と内部に保存されているデータとは異なります。 残念ながら入力規制では出来ません。 テーブルデザインの入力規制欄でF1(ヘルプ)でご確認ください。 やるとするとフォームに配置したテキストボックスの更新前処理あたりに If Me!テキストボックス名 Mod 1 <> 0 then ' 1 で割って 余りが0 でない Cancel = true Exit Sub End If として弾くか あるいは視点を変えて 桁数が間に合えば長整数型にしておいて 小数点が絡む計算では、Ccur(フィールド名)で通貨型に変換して 行うとか? ではないかと思います。

k7qa170622
質問者

お礼

こんにちは、お礼が遅れて申し訳ありません。 ちょうど今ACCESSのVBAの勉強を始めたばかりです。 やっと下記のコードを書きました。 1で割ると小数以下の余りは0になるようなので 10000を掛けて 10000で割り余りが整数になるように しました。少数以下最大4桁入力可なので 10000を掛けました。 どうもありがとうございました。 また、わからないときは教えてください。 Private Sub tuukaGATA_BeforeUpdate(Cancel As Integer) If Me!tuukaGATA * 10000 Mod 10000 <> 0 Then Cancel = True Exit Sub End If End Sub

関連するQ&A