SQL查询未按预期执行:Visual Studio

时间:2019-08-09 19:24:03

标签: sql vb.net visual-studio-2012

我有一个程序,该程序使用查询从数据库中提取搜索结果来填充页面。用户可以从下拉菜单中选择多个选项,它只会返回包含特定选择的结果,但是当我尝试使用它时,它将返回不包含用户选择的结果。这是我使用的查询之一(其他查询非常相似,都遇到相同的问题)。

+--------------------+-----+-------+-----------+
|             carMake|model|variant|gasOrPetrol|
+--------------------+-----+-------+-----------+
|[volvo, [850 -> [...|  850|     T5|     petrol|
|[volvo, [850 -> [...|  V50|     T5|     petrol|
+--------------------+-----+-------+-----------+

如果未选择年份,则建立数据库的方式如在我只选择一个branchId,PosTypeId或CompTypeId的情况下,就会有超过100个结果,因此不会返回该列表。那不是问题。选择一年以及其他参数时会出现问题(我们忽略CompNum,因为我们想要多个结果,而不是特定的Num)。

会发生什么,该列表将包含该年的所有元素,甚至不查看其他参数。

例如,如果我要求它查找在2019年分支为1,PosType为2和compType为3的所有元素,它将返回2019年的所有元素。它将忽略其他搜索条件。

任何建议将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

在pstrCompYear过滤器的前面和后面添加括号,因此Or不会影响其余条件。

And ((pstrCompYear Is Nothing OrElse c.comp_number.Length <= 8 And c.comp_number.StartsWith(strYear) = True) _
       Or (pstrCompYear Is Nothing OrElse c.comp_number.Length > 8 And c.comp_number.Substring(6, 2) = strYear)) _
相关问题