从Access中的多值字段中删除值

时间:2013-09-10 12:05:28

标签: sql ms-access-2007

我有一个名为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));

这将从整个数据库中删除一个值。我想从一个用户中删除该值。

所以现在我有点迷茫。您可以提供的任何帮助将不胜感激。感谢。

2 个答案:

答案 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"));