Обновить значение rcount после выполнения запроса на удаление.
rcount = DCount("F1", "T1")
Do While rcount > 0
'DoCmd.OpenQuery "q1"
CurrentDb.Execute "q1", dbFailOnError
rcount = DCount("F1", "T1")
Loop
Примечание с помощью CurrentDb.Execute
вместо DoCmd.OpenQuery
, вы можете избежать подтверждающее сообщение, не поворачивая SetWarnings
прочь. И он также позволяет вам использовать dbFailOnError, который будет уведомлять вас о проблемах, которые в противном случае могли бы работать тихо.
Однако я не понимаю, почему вы хотите, чтобы удалить все T1 записей один в момент, когда вы можете удалить их все на одном дыхании ...
CurrentDb.Execute "DELETE FROM T1;", dbFailOnError
После первой установки значения 'rcount', он никогда не меняется. Поэтому, если условие 'rcount> 0' является' True', когда вы нажмете 'Do While', оно останется' True'. Опишите, что вы хотите выполнить. – HansUp
Если код зацикливается, то он не игнорирует условие ... попробовали ли вы запустить это с открытием окна «Локали», чтобы узнать, что на самом деле стоит «rcount»? –
Извините, я оставил эту часть. Таблица, в которой используется dcount, изменяется каждый цикл, удаляя 1 запись за раз, пока dcount = 0, в этот момент цикл должен остановиться. Если я сломаю цикл и посмотрю на таблицу, dcount против, я вижу, что мой код удалил все записи, в этом случае dcount должен быть 0. – David