【发布时间】:2021-07-16 20:34:25
【问题描述】:
我想知道如果单元格值留空,是否有办法使部分字符串查询无效,而不是使用嵌套的 If 语句。
细胞结构如下:
来自这些参数的单元格值将被传递到查询数据库的 vba 代码中。 理想情况下,我不想为每种选择类型创建单独的查询——我已经让它从位置动态查询。我想扩展查询以包括开始、结束、值 >、值
SELECT *
from database
WHERE location = 'cell_loc'
AND Value >= 'cell_value'
AND Value <= 'cell_value'
AND Start >= 'cell_date'
AND End <= 'cell_date'
现在假设 Start 留空,这意味着我想从数据库中的第一个数据点进行查询:
我可以编写一个嵌套的 if 来处理这个问题,但想知道是否有一种方法可以取消查询参数,以便我可以将单个查询提供给数据库,并根据单元格数据更改不同的参数?
类似的东西:
SELECT *
from database
WHERE location = 'cell_loc'
AND Value >= 'cell_value'
AND Value <= 'cell_value'
AND Start >= 'cell_date' --> this would be voided out
AND End <= 'cell_date'
【问题讨论】:
-
看一下 coalesce() 函数。 stackoverflow.com/questions/17104329/…
-
通常您会通过构建 SQL 来做到这一点,根据需要添加每个 where 子句,具体取决于您的查询单元格是否被填充。
-
@SamM hm,看起来只返回列表中的第一个空值。如果填充了单元格值,我仍然想返回整个选择。为了更清楚,“单元格值”是我的查询参数,而不是我查询的数据库值。
-
@TimWilliams 你有一个查询单元的例子吗?我不需要它们,可以复制,但如果你想将该条件添加到上面查询中的 Start 参数中。