0

我有一个名为 Users 的表,其中包含一个名为 Area 的多值字段。我正在创建一个简单的 SQL 语句,它只是删除指定给单个用户的区域。在下面的示例中:从具有“123”徽章编号的用户中删除区域“G1”。

这是我的 SQL 语句:

DELETE Users.Area.Value
FROM Users
WHERE (((Users.Area.Value)="G1") AND ((Users.badgeNumber)="123"));

这以某种方式设法导致输入参数值对话框。仔细检查后,所有参数都应正确输入。事实上,将 DELETE 更改为 SELECT 会创建一个成功的 SQL 语句。

查看 Microsoft 帮助页面,我找到了这个示例

DELETE Issues.AssignedTo.Value
FROM Issues
WHERE (((Issues.AssignedTo.Value)=6));

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

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

4

2 回答 2

1

我仍然不确定为什么会弹出 Enter Parameter 对话框,但我决定使用以下方法重做我的代码。它清除了整个用户的区域首选项,然后再次设置它们。

要清除 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
于 2013-09-10T13:02:40.150 回答
0

我刚刚解决了同样的问题。这令人难以置信,但改变 where 子句中的顺序是可行的:

DELETE Users.Area.Value
FROM Users
WHERE (((Users.badgeNumber)="123") AND ((Users.Area.Value)="G1"));
于 2015-08-31T21:11:02.773 回答