MS Access更新查询(多个条件)

易趣比尔

我在拆分表单上有一个[ScanItem]文本框,该文本框带有两个不同的条形扫描值,真光滑!

字母数字,Len 11
数字,Len 12

我的更新查询有效,但仅适用于一种WHERE条件。我希望使用Len函数来组合WHERE函数,但无法使其正常工作。

字母数字Len 11的更新查询(示例:019-WMD-001):

strSQL = "UPDATE [Location Table]" & _
         "SET [Location]='" & Me.Location1.Value & "'" & _
         "WHERE [Location Table].[Custom Label] = [ScanItem]"

更新查询数字镜头12

"WHERE [Location Table].[Item ID] = [ScanItem]"

我知道表空间是禁忌,但我对此没有控制权。如果这不起作用,将欢迎任何其他解决方案。

1968年

如果我正确理解了您的问题,那么如果[ScanItem]的长度= 11(在这种情况下,请使用[自定义标签]),则要应用一个WHERE子句评估;如果[ScanItem]的长度= 12(在这种情况下,则要应用另一个WHERE子句评估)案例使用[商品ID]进行比较)。有多种方法可以做到这一点。我没有解决SQL注入问题-只是查询逻辑,但是您始终可以使用参数来重写它(建议最佳实践)。您可以编写查询以使用条件逻辑,或者您的vba可以使用条件逻辑(假设仅存在11和12的长度条件)。我是方案2的粉丝。

方案1(查询使用条件逻辑):

strSQL = "UPDATE [Location Table] " & _
"SET [Location]='" & Me.Location1.Value & "' " & _
"WHERE ([Location Table].[Custom Label] = '" & Me.ScanItem.Value & "' AND LEN('" & Me.ScanItem.Value & "') = 11) " & _
"  OR ([Location Table].[Item ID] = '" & Me.ScanItem.Value & "' AND LEN('" & Me.ScanItem.Value & "') = 12)"

方案2(vba使用条件逻辑-假设仅2种可能的长度为11而不是11)

strSQL = "UPDATE [Location Table] " & _
"SET [Location]='" & Me.Location1.Value & "' " & _
"WHERE ([Location Table]." & IIF(Len(Me.ScanItem.Value)=11,"[Custom Label]","[Item ID]") & " = '" & Me.ScanItem.Value & "'"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章