我有一个名为Users的表,其中有一个名为Area的多值字段。我正在创建一个简单的SQL语句,只删除指定给单个用户的区域。 在以下示例中:从用户移除区域“G1”,徽章编号为“123”。
这是我的SQL语句:
DELETE Users.Area.Value
FROM Users
WHERE (((Users.Area.Value)="G1") AND ((Users.badgeNumber)="123"));
以某种方式设法导致输入参数值对话框。仔细检查后,应正确输入所有参数。实际上,将DELETE更改为SELECT会创建一个成功的SQL语句。
查看Microsoft帮助页面,我找到了this example。
DELETE Issues.AssignedTo.Value
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));
这将从整个数据库中删除一个值。我想从一个用户中删除该值。
所以现在我有点迷茫。您可以提供的任何帮助将不胜感激。感谢。
答案 0 :(得分:1)
我仍然不确定为什么弹出“输入参数”对话框,但我决定使用以下方法重做我的代码。它清除了整个用户的区域首选项,然后再次设置它们。
要清除MVF区域,它看起来像这样:
DELETE Users.Area.Value
FROM Users
WHERE Users.BadgeNumber = "123"
要添加到MVF,我使用了以下内容:
Dim varReport As Variant
For i = 0 To Me.boxArea.ListCount - 1
If Me.boxArea.Selected(i) = True Then
sqlString = "INSERT INTO Users ([area].[Value]) VALUES ('" & Me.boxArea.Column(boundColumnZeroBasedIndex, i) & "') WHERE badgeNumber = '" + txtBadgeNumber + "';"
CurrentDb.Execute sqlString, dbFailOnError
End If
Next i
答案 1 :(得分:0)
我刚刚解决了同样的问题。它令人难以置信,但改变了where子句中的顺序:
DELETE Users.Area.Value
FROM Users
WHERE (((Users.badgeNumber)="123") AND ((Users.Area.Value)="G1"));