![](/img/trans.png)
[英]SQLite – Issue with reusing values from the SELECT clause in the WHERE clause
[英]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.