人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Accessの式についての質問です。
下記の式1で目的のデータは作成できますが、[A]に入っている空白を数字の0に置き換えることができません。
式2だとエラーになってしまいます。空白やNullは全て0にしたいのです。
初歩的な質問で申し訳ありませんが、どうかよろしくお願い致します。

式1: IIf([A]>[B],0,IIf(IsNull([A]),0,[C]*[T_table2]![a]/100))

式2:IIf([A]>[B],0,IIf(IsNull([A]),0,IIF([A]="",0,[C]*[T_table2]![a]/100)))

●質問者: aqua-marine
●カテゴリ:ビジネス・経営 コンピュータ
✍キーワード:access エラー データ 作成 数字
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● graygreen127
●20ポイント

http://www.accessclub.jp/

IIf(IsNumeric([A]),IIf([A]>[B],0,[C]*{T_table2]![a]/100),0)

IsNumeric関数は、引数が数値として認識できる場合はTRUE、それ以外はFalseを返します。

◎質問者からの返答

早速のご回答、どうもありがとうございます。

現在確認できる環境ではないため、後程試してみます。


2 ● mash260977
●0ポイント

こちらで参考になりますでしょうか?

http://www.accessclub.jp/supbeg/053.html

◎質問者からの返答

ありがとうございます。

IsNullは既に使用していて、Nullは0に置き換えられたのですが空白はそのままで困っています。

graygreen127さん、本日試してみたのですがうまくいきませんでした。

理由は私自身の説明不足で[A][B]は日付だったからです。ただこの関数は聞いたことがなかったので、今後も役立ちそうです。

引き続き回答をお待ちしておりますので、どうかご指導下さいますようよろしくお願い致します。


3 ● りくっち
●60ポイント ベストアンサー

http://www.accessclub.jp/actips/tips_59.htm

お疲れ様です。

質問文を拝見したときから「おや?」と思っていたのですが、

フィールド「A」に入っているデータが値・空白・Null値のどれかであるなら、提示の「式2」で結果が得られているはずだと思います。

それが得られないということは、値・Null値以外に空白と思われているデータ内にスペースが入っているのではないでしょうか。

スペースが入力されている場合は空白(""=長さ0の文字列)ではないので、

スペース自体を検索してやる必要があります。


ですが、Accessデータを扱っておられて、比較対象のデータ形式が日付であるなら、

本来こうしたことはおきてきません。

データが日付で、フィールドプロパティが日付であれば、

空白やスペースは自動的に排除されるからです。


おそらく状況から考えてフィールド「A」のプロパティは「文字列」だと思われます。

Accessではテーブルの設計時にフィールドプロパティを設定するのが基本かと思っていますが、

こうした現象が起きるということは、

元のデータはExcelで入力されたものや、CSVや固定長のテキストデータをインポートされたものなのではないでしょうか。

これらをインポートする際、きちんと同じ書式で入力されていれば自動的に最適のフィールド形式になりますが、

記入方法がまちまちだったり、スペースが入力されていたりすると、

ほとんどは文字列として変換されてしまうのです。


http://www.accessclub.jp/beginer/years/years_03.htm

なので、データ加工が可能なら、フィールドA、フィールドBのプロパティをテーブルのデザインビューから「日付/時刻」に設定しなおしてみてはどうでしょうか。

(もちろん必ずデータはコピーをとってやってくださいね)

もし空白やスペースや、不完全な日付データが入っていた場合は、

「データ変換中にエラーが発生しました」

というメッセージが出て、「はい」をクリックするとそれらが全てNull値に変換されます。

その設定後ならば、提示されている「式1」で十分結果が得られると思うのですが。


以上推測の上で書いてみました。見当違いだったらすみません。

ご参考まで。

◎質問者からの返答

rikuzai様、どうもありがとうございました。

おっしゃる通りでした。

サーバからcsv形式で落としたものをExcelで加工していたのですが、

データがあまりにも重くなってしまったためAccessでの加工を試みていました。

日付データの入力が海外と国内の担当者で違っていたために、うまくいかなかったようです。

おかげさまできちんと処理ができるようになりました。

本当にどうもありがとうございました。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ