Удаление записей на основе критериев в таблице и поля в другой таблице - PullRequest
1 голос
/ 05 апреля 2019

Создан следующий запрос с использованием представления конструктора в Access 2010.

Запрос выполняется и возвращает правильные записи, но при попытке запустить его для удаления записей появляется сообщение об ошибке:

Невозможно удалить из указанной таблицы.

Я пытаюсь удалить записи со статусом "I" или "p" И год совпадает с годом, сохраненным в другой таблице.

  • Таблица W: Имя, статус, год
  • Год таблицы: текущий год

Я очень ценю любую помощь, которую вы можете предоставить.

Я пытался построить запрос по-разному, я искал решения, аналогичные тому, что у меня есть.Я новичок в Access и никогда не использовал SQL раньше.Я только учусь этому

DELETE Tbl_W.*, Tbl_W.Status, Tbl_Year.[Current Year]
FROM Tbl_W, Tbl_Year
WHERE (((Tbl_W.Status)="p" Or (Tbl_W.Status)="i") AND ((Tbl_AGIFYear.[Current Year])=[current year]));

Чтобы иметь возможность удалять записи, идентифицированные запросом.

1 Ответ

2 голосов
/ 05 апреля 2019

В MS Access вы можете удалять только записи из по одной таблице за раз .Также нет необходимости указывать поля, которые должны быть удалены, так как могут быть удалены только целые записи .

Учитывая приведенную выше информацию, ваш запрос delete может стать:

delete from tbl_w
where 
tbl_w.status in ("i", "p") and 
tbl_w.year in (select tbl_year.[current year] from tbl_year)

Или, если вы используете tbl_year только для предоставления записи, содержащей текущий год, вы можете альтернативно использовать функции Year и Date вследующим образом:

delete from tbl_w
where tbl_w.status in ("i", "p") and tbl_w.year = year(date())
...