4

関連テーブルから特定のフィールドの合計を返すサブクエリがフィールドの 1 つに含まれている Access のクエリがあります。サブクエリの結果は、メイン クエリの以降の計算で使用されます。

これは、ADO.Net を使用する VB.Net (C# で十分です) の自家製レポート アプリケーションで使用されます。クエリは Access のテーブルに保存されるため、アプリケーションを再度公開することなく、小さなバグを修正したり、データに関連する一時的な機能を追加したりできます。

問題は、サブクエリが結果を返さない (null) 可能性があることです。さらに、計算で使用される null 値も null 値を返します。したがって、必要に応じて null 値を 0 に置き換える必要があります。を追加しましNZ(subquery, 0)たが、ADO.Net は次の例外をスローします。

Undefined function 'NZ' in expression

VBA 関数は Access.Application オブジェクトの一部であるため、ADO.Net では使用できないことを知りました。

の使用も検討しIIF(subquery Is Null, 0, subquery)ましたが、それではサブクエリを複製する必要があり、Access でサブクエリを 2 回(おそらく)実行する必要があります。サブクエリはかなり複雑なので (そしてメイン クエリもそうです)、パフォーマンスではないにしても、少なくとも読みやすさのために、それを避けたいと思います。

null 値を別の値に置き換える、または一致するレコードがなくてもサブクエリが常に null 以外の合計を返すようにする別の方法はありますか?

4

4 に答える 4

1

使ってみて?? 以下のように:

         double? nullableVar=null;
         double nonNullableVar;
         nonNullableVar = (nullableVar ?? 0);
于 2015-08-06T20:56:39.483 に答える