Обновление многозначного поля в Access - PullRequest
8 голосов
/ 16 мая 2011

Я создал таблицу поиска в Access, чтобы указать возможные значения для столбца.Теперь мне нужно обновить этот столбец данными, которые у него были до того, как я преобразовал столбец.Я не могу понять SQL-запрос, который будет работать.Я продолжаю получать сообщение об ошибке «Запрос UPDATE или DELETE не может содержать многозначное поле».Мои исследования показали, что мне просто нужно установить значение столбца, но это всегда обновляет 0 записей:

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

Я знаю, что этот запрос будет работать, если я изменю его для обновления текстового столбца, поэтомуопределенно проблема только с этим столбцом.

Ответы [ 7 ]

15 голосов
/ 16 мая 2011

Если вы добавляете значение в многозначное поле, используйте запрос на добавление.

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;

См. Использование многозначных полей в запросах для получения дополнительной информации.

5 голосов
/ 16 мая 2011

Я понял это!Это, конечно, было нелогичным!Вы должны использовать оператор 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.Я думаю, что фактически вставляет запись в скрытую таблицу, которая используется для связывания нескольких значений с этим столбцом.

3 голосов
/ 09 декабря 2011

Я работаю с Sharepoint, я создал таблицы в виде полей с несколькими значениями, столкнулся с ошибкой в ​​моем операторе INSERT INTO, вернулся к Sharepoint, чтобы перейти к полям с несколькими значениями, но это не помогло Это.

Воссоздала таблицу без , используя многозначные поля, и INSERT INTO работал просто отлично.

0 голосов
/ 07 января 2018

Поле с несколькими значениями относится к базам данных Access, в которых есть таблицы со столбцами, которые позволяют выбирать несколько значений, например, комбинированный флажок.

ТЕ - единственные типы доступа, с которыми SQL не может работать. Я проверил все возможности поиска в Access, включая жестко запрограммированные значения и таблицы поиска. Они работают нормально, но если у вас есть столбец с опциями «Разрешить множественный выбор», вам не повезло. Даже использование INSERT INTO, как упомянуто ниже, не будет работать, так как вы получите похожую, но другую ошибку, о INSERTing в многозначные поля.

Как уже упоминалось, лучше избегать использования таких таблиц вне Access и обращаться к таблице специально для ваших внешних потребностей. Затем напишите скрипт macro / vba для обновления реальных таблиц данными из «вспомогательной» таблицы.

0 голосов
/ 03 июля 2013
INSERT INTO Quals (cTypes.[value])
SELECT Quals_ContractTypes.ContractType
FROM Quals_ContractTypes
WHERE (Quals.ID = Quals_ContractTypes.ID_Quals);
0 голосов
/ 16 мая 2011

не используйте часть .value

UPDATE [table_name] SET [column_name] = 55 WHERE [table_name].ID = 16;
0 голосов
/ 16 мая 2011

Должен сказать, что я не очень хорошо понял вашу проблему, но я увидел что-то странное в вашем запросе. Попробуйте это:

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

UPDATE
Посмотрите на эту ссылку: в ней есть пример

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

ПРИМЕЧАНИЯ

Вы всегда должны включать ГДЕ пункт, который идентифицирует только записи, которые вы хотите обновить. В противном случае вы будете обновлять записи что ты не собирался менять. Обновить запрос, который не содержит Предложение WHERE изменяет каждую строку в Таблица. Вы можете указать одно значение для изменить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...