1

データセットに対して複数の選択を実行しています。これらすべての選択からの #records の合計は、データセット内のレコードの合計数と一致するはずですが、そうではありません。(すべての選択の合計は少なくなります。) .Net 1.1 Select には複数の AND 条件によるバグがあることを読みましたが、これは VS2005 & .Net 2.0 です。

コードは次のとおりです。 注: 一部の行のカテゴリ値は入力されていません。

string Filter;
Filter = "Category = 'HIGH'";
Response.Write("High: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");

int TotalRecords = dslErrors.Tables[0].Rows.Count; //This is correct

Filter = "Category = 'MEDIUM'";
Response.Write("Medium: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");

Filter = "Category = 'LOW'";
Response.Write("Low Error Count: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");

Filter = "((Category <> 'HIGH') AND (Category <> 'MEDIUM') AND (Category <> 'LOW'))";
Response.Write("Other: " + dslErrors.Tables[0].Select(Filter).GetLength(0).ToString() + "<br>");
4

1 に答える 1

7

が であるレコードがある場合Categorydbnullそれらはリストした式の および と一致しません。

filter最後を次のように変更することをお勧めします。

"(
   (
         (Category <> 'HIGH') 
     AND (Category <> 'MEDIUM')
     AND (Category <> 'LOW')
   )
   OR Category IS NULL
)";

これが機能しない理由は、dbnull との比較で、予想される false ではなく null が返されるためです。

于 2009-04-01T14:10:37.370 に答える