我有一张有三个组合盒的表格。组合框的值生成带有3个参数的SQL查询。SQL生成一个RDLC报告。
例如:
带值的Combox1 (v1,v2,v3,ALL)
带值的Combox2 (v1,v2,ALL)
具有值的Combox3 (v1,v2,v3,4,ALL)
Me.ExampleTableAdapter.QueryWithParams(Me.ExampleDataSet.Table, Combobox1.SelectedIndex, Combobox2.SelectedIndex,Combobox1.SelectedIndex)QueryWithParams:
SELECT * FROM Table WHERE Column1=@c1 AND Column2=@c2 AND Column3=@c3好的,问题是当所选的值都在组合体X中时,我无法得到值,因为我必须更改查询并踢出参数。例如:如果combo1、combo2、combo3都有值。我不需要参数。
SELECT * FROM Table 如果combo1是全部。
SELECT * FROM Table WHERE Column2=@c2 AND Column3=@c3如果combo1和combo3都是
SELECT* FROM Table WHERE Column2=@c2 ..。然后在代码中查看组合体的选定值,然后在其上执行查询。
有没有一种方法可以不生成所有的8类型的查询就完成这件事?
PS。我不能使用存储过程,因为我使用的是Server契约
发布于 2011-03-02 09:14:47
如果“ALL”的值应该发送到值'NULL‘的查询中
SELECT *
FROM Table
WHERE (Column1=@c1 OR @c1 IS NULL)
AND (Column2=@c2 OR @c2 IS NULL)
AND (Column3=@c3 OR @c3 IS NULL)编辑:当然,对于任何指定的'ALL‘-值示例’ALL‘= -1,也可以这样做。
(Column1=@c1 OR @c1 = -1)发布于 2011-03-02 09:17:19
在查询未选择任何/全部内容的列时,应该可以使用IsNull:
WHERE Column1 = ISNULL(@c1, Column1)MSDN
https://stackoverflow.com/questions/5165375
复制相似问题