2016-04-05 5 views
0

を与える:二ほぼ同じAccessクエリ、1。これは正しく動作します '無効なプロシージャコール'

select [feature number], 
len(mid([feature number],instr([feature number],"."))) > 2 from featuredata 

これはInvalid procedure callエラーを与える:

select [feature number] from featuredata 
where len(mid([feature number],instr([feature number],"."))) > 2 

feature numberはテキストフィールドですが、場合でも、I数値以外の値が処理されないようにする:

select [feature number] from featuredata 
where iif(isnumeric([feature number]), 
len(mid([feature number], 
instr([feature number],"."))) > 2,false) 

私はまだInvalid procedure callエラー。なぜこのエラーが発生するのですか?

+1

'IIf'では、両方の結果が評価されますが、1つだけが返されます。 case文を使用する必要があるかもしれません。 – Kidiskidvogingogin

答えて

2

何が起こるかというと、このです:

instr([feature number],".")が0であれば、あなたは

mid([feature number], 0)を呼び出し、これは無効です。

あなたiifisnumeric([feature number])をチェックしますが、

instr([feature number],".") > 0 

の編集べきではない:なぜ最初のバージョンは動作しますか?

実行中は、 "。"がないすべての行に対して#Function!が返されます。 [feature number]にあります。だからここでもエラーが発生します。

関連する問題