我的设计中有一个复选框(Active)。它存储0或1.我必须根据复选框值搜索项目,即,活动或非活动或两者。对于活动我可以使用1而对于非活动我可以使用0.但我需要使用所有条件(true,false,true和false)。
答案 0 :(得分:4)
假设您已经使用WHERE
语句SomeConditions
进行检查,那么您只需执行此操作:
对于活跃......
WHERE SomeConditions AND Active = 1
非活动......
WHERE SomeConditions AND Active = 0
要么......
// Just leave the Active out of the WHERE statement
WHERE SomeConditions
答案 1 :(得分:2)
假设:
@active
现在改变你的WHERE
条款:
-- Active is the column name and @active is the query parameter
WHERE {existingConditions} AND (@active = 2 OR @active = Active)
更新:
由于您没有添加适当的标签,我将基于Windows窗体和WPF for UI和ADO.NET进行数据访问。对于其他技术,您可以使用与此类似的方法。
对于winforms:让我们说CheckBox
将其ThreeState
属性(WPF中的IsThreeState
)设置为true
,然后您就可以获取并通过像这样的价值:
SqlCommand cmd = conenction.CreateCommand();
sbyte active;
switch (checkBox1.CheckState)
{
case CheckState.Checked:
active = 1;
break;
case CheckState.Unchecked:
active = 0;
break;
case CheckState.Indeterminate:
active = 2;
break;
}
/*
// For WPF:
if (checkBox1.IsChecked.HasValue)
active = checkBox1.IsChecked ? 1 : 0;
else
active = 2;
*/
cmd.Parameters.AddWithValue("@active", active);