0

なぜ私は使用できない:

     rep8_bc = IIf(IsNull(rs(8)), "null", Replace(rs(8), "'", "''"))

「Nullの無効な使用」と表示されます

しかし、置換を削除すると、うまくいきます。レコードにアポストロフィ文字があるため、エラーが発生するため、コードを次のように変更します。

 rep8_bc = "null"
 If IsNull(rs(8)) = False Then rep8_bc = Replace(rs(8), "'", "''")

またはこれ:

 If IsNull(rs(8)) = False Then
     rep8_bc = Replace(rs(8), "'", "''")
 else
     rep8_bc = "null"
 end if
4

1 に答える 1

4

ほとんどの場合、コンパイラは IIF() ステートメント内で短絡しません。コンパイラは、それをステートメント全体 (両方の値) として受け取ってから返します。ここでエラーが発生します。したがって、適切な条件ステートメントの断片に分割することがここでの鍵となります。だからあなたはあなたの答えでそれを達成しました。さらに付け加えると、IIF() はIF-ELSE ステートメントよりも実行がはるかに遅くなります。

于 2012-11-13T08:19:12.690 に答える