更新Access中的多值字段

时间:2011-05-16 13:30:16

标签: sql ms-access

我在Access中创建了一个查找表,以提供列的可能值。现在我需要使用转换列之前的数据更新此列。我无法找出一个可行的SQL查询。我不断收到错误“UPDATE或DELETE查询不能包含多值字段”。我的研究表明我只需要设置列的值,但这总是会更新0条记录:

UPDATE [table_name] SET [column_name].Value = 55 WHERE [table_name].ID = 16;

我知道如果我将其更改为更新文本列,此查询将起作用,因此这个列只是一个问题。

7 个答案:

答案 0 :(得分:15)

如果要为多值字段添加值,请使用追加查询。

INSERT INTO table_name( [column_name].Value )
VALUES (55)
WHERE ID = 16;

如果要更改多值字段中存在的一个特定值,请使用UPDATE语句。例如,要将55更改为56 ...

UPDATE [table_name]
SET [column_name].Value = 56
WHERE [column_name].Value = 55 And ID = 16;

有关详细信息,请参阅Using multivalued fields in queries

答案 1 :(得分:5)

我已经弄明白了!这肯定是违反直觉的!您必须使用INSERT语句来执行更新。

-- Update a record with a multi-valued field that has no value
INSERT INTO [table_name] ( [[column_name].[Value] )
VALUES(55)
WHERE [table_name].ID = 16;

这使我感到困惑,因为我期待UPDATE语句。我认为它实际上是将一条记录插入到一​​个隐藏表中,该表用于将多个值与该列相关联。

答案 2 :(得分:3)

我正在使用Sharepoint,我将表创建为多值字段,使用我的INSERT INTO语句遇到错误,返回到Sharepoint以更改为非多值字段,但是没有解决它。

使用多值字段重新创建没有的表格,INSERT INTO工作正常。

答案 3 :(得分:0)

我得说我没有很好地解决你的问题,但我在你的查询中看到了一些东西。试试这个:

UPDATE [table_name] SET [column_name]= 55 WHERE [table_name].ID = 16;

<强>更新
查看this链接:它有一个示例

UPDATE Issues 
SET Issues.AssignedTo.Value = 10
WHERE (((Issues.AssignedTo.Value)=6) 
AND ((Issues.ID)=8));
  

注意

     

您应该始终包含WHERE   仅标识的子句   要更新的记录。   否则,您将更新记录   你不打算改变。一个   更新不包含的查询   WHERE子句更改了每一行   表。您可以指定一个值   变化

答案 4 :(得分:0)

不要使用.value部分

UPDATE [table_name] SET [column_name] = 55 WHERE [table_name].ID = 16;

答案 5 :(得分:0)

INSERT INTO Quals (cTypes.[value])
SELECT Quals_ContractTypes.ContractType
FROM Quals_ContractTypes
WHERE (Quals.ID = Quals_ContractTypes.ID_Quals);

答案 6 :(得分:-1)

“多值”字段是指具有列的表的Access数据库,允许您选择多个值,例如“组合复选框”列表。

THOSE 是SQL无法使用的唯一Access类型。我已经测试了所有Access查找可能性,包括硬编码值和查找表。它们工作正常,但是如果你有一个允许多个选择选项的列,那你就不走运了。即使使用下面提到的INSERT INTO,也无法正常工作,因为您会在插入多值字段时遇到类似但不同的错误。

如上所述,最好避免在Access之外使用此类表,并参考专门针对您的外部需求的表。然后编写一个宏/ vba脚本,用“辅助”表中的数据更新实际表。