ADO.NET DataSets die SQL Kommandos mit Parametern enthalten setzen unter bestimmten Umständen die Datentypen der Parameter falsch. Bei der folgenden WHERE Bedingung wird der Paramter @ActiveOnly z.B. als String interpretiert:
WHERE
(@ActiveOnly = 0 OR Active = 1)
Tauschen des Parameters und der Konstante löst das Problem:
WHERE
(0 = @ActiveOnly OR Active = 1)
@ActiveOnly wird hier als Decimal interpretiert. Soll der Parameter ein Boolean sein, lässt sich das durch einen CAST erreichen:
WHERE
(CAST(0 AS BIT) = @ActiveOnly OR Active = 1)