2012-06-30 2 views
1

У меня есть запрос в MS Access, который создает правильный результат записи, но Access отказывается запускать запрос как запрос на удаление?
Может ли кто-нибудь помочь мне переписать этот запрос для запуска в доступе.MS Access delete Query

Delete Table_A.* 
FROM (SELECT Table_A.Main_RecID, Table_A.Fld_Unique_ID, Table_A.Actiontaken FROM Table_A 
WHERE Table_A.Actiontaken="MainRecord deleted") AS Tmp_B 
LEFT JOIN Table_A ON Tmp_B.Main_RecID=Table_A.Main_Recid 
WHERE (((Table_A.Actiontaken)<>"MainRecord deleted")); 

Если «Удалить» заменяется избранным или я прошу таблицы просмотра запросов производит то, что я хотел бы ожидать. Какой список записей в таблице имеет тот же Main_RecID, что и записи с полем Actiontaken = «MainRecord deleted», но не имеет поля Actiontaken равным «MainRecord deleted».

Доступ отвечает сообщением «Не удалось удалить из указанных таблиц».

ответ

0

Я начал с этими данными в Table_A ...

Fld_Unique_ID Main_RecID Actiontaken 
      1   1 MainRecord deleted 
      2   1 
      3   2 MainRecord deleted 
      4   2 something else 
      5   3 something else 

Примечание Actiontaken является нуль во второй строке (где Fld_Unique_ID = 2).

Выполнение инструкции DELETE оставляет эти данные в таблице.

Fld_Unique_ID Main_RecID Actiontaken 
      1   1 MainRecord deleted 
      3   2 MainRecord deleted 
      5   3 something else 
DELETE 
FROM Table_A 
WHERE 
    (
      Actiontaken<>'MainRecord deleted' 
     OR Actiontaken Is Null 
    ) 
    AND 
    (
     DCount("*", "Table_A", 
      "Main_RecID = " & Main_RecID 
      & " AND Actiontaken='MainRecord deleted'") > 0 
    ); 

Если это не то, что вы после этого, пожалуйста, покажите нам образцы данных до и после DELETE.

+0

Это то, что я ищу. Извините за задержанный ответ, в котором я был вовлечен. Когда я впервые посмотрел на этот запрос, я сразу сказал, что это не то, что я хотел, но он работает в Access. Спасибо, сэр (или мадам). Я снимаю с тебя шляпу. –