繁体   English   中英

带有多个条件的 WHERE 子句,其中的值来自 SELECT

[英]WHERE clause with multiples conditions with values from the SELECT

我需要编辑旧的 Access 表单。

当一个人在表单域中输入信息时,会通过 SQL SELECT 语句找到与姓名关联的数字。

"SELECT * FROM TPro WHERE Name = " & Chr(34) & cboPro.Value & Chr(34)

TPro 表如下所示:

ID          Name               QtyMin        QtyMax     Percent
-------- ---------------- --------------- ----------- ----------
001     |   2x4 plank    |       0       |    500    |    10    
002     |   6x8 plank    |       0       |    500    |    5 
003     |   6x8 plank    |      501      |   2000    |    10 
004     |   6x8 plank    |      2001     |   99999   |    15
005     |   10x8 plank   |       0       |    500    |    5 

对于这个例子,假设找到的名称是“ 6x8 plank ”,数字是600 该数字存储在一个名为qtyCmd的变量中

现在我需要选择 3 个“6x8 木板”行中的哪一个是正确的,我需要找到 600 介于 qtyMin 和 qtyMax 之间的那个,所以我知道哪个百分比是正确的应用(在这种情况下它将是10)。

我以为我可以通过像这样的原始 SELECT 语句来获得所有这些,但我得到一个错误,它丢失了一些东西。

"SELECT * FROM TPro WHERE Name = " & Chr(34) & cboPro.Value & Chr(34) AND (qtyCmd >= QtyMin & qtyCmd <= QtyMax)

这样的事情可以让我找到正确的行吗? 还是我需要更复杂的东西才能做到这一点?

感谢您的帮助,并为我缺乏英语感到抱歉。

考虑:

"SELECT * FROM TPro WHERE Name = '" & Me.cboPro & "' AND " & qtyCmd & " BETWEEN QtyMin AND QtyMax"

我假设您正在使用该 SQL 设置记录集对象。 但是,如果您想要的只是一个值,则可以使用 DLookup() 域聚合函数。

x = DLookup("[Percent]", "TPro", "[Name] = '" & Me.cboPro & "' AND " & qtyCmd & " BETWEEN QtyMin AND QtyMax")

然后另一种方法是组合框,它在下拉列表中显示所有这些 TPro 字段,并且用户选择正确的项目,然后百分比可通过参考组合框列获得。 但也许它要求太多用户来评估 qtyCmd 值属于哪个范围。

无论采用哪种方法,都应该只将 TPro ID 保存到数据中 - 除非 TPro 中的百分比值将来可能会更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM