2015-01-08 4 views
1
rcount = DCount("F1", "T1") 

Do While rcount > 0 

DoCmd.OpenQuery "q1" 

Loop 

Может ли кто-нибудь сказать мне, пока этот код не будет работать? Он прокручивается, но, по-видимому, игнорирует условие rcount > 0Доступ к VBA Loop с Dcount Условие

+0

После первой установки значения 'rcount', он никогда не меняется. Поэтому, если условие 'rcount> 0' является' True', когда вы нажмете 'Do While', оно останется' True'. Опишите, что вы хотите выполнить. – HansUp

+0

Если код зацикливается, то он не игнорирует условие ... попробовали ли вы запустить это с открытием окна «Локали», чтобы узнать, что на самом деле стоит «rcount»? –

+0

Извините, я оставил эту часть. Таблица, в которой используется dcount, изменяется каждый цикл, удаляя 1 запись за раз, пока dcount = 0, в этот момент цикл должен остановиться. Если я сломаю цикл и посмотрю на таблицу, dcount против, я вижу, что мой код удалил все записи, в этом случае dcount должен быть 0. – David

ответ

1

Обновить значение 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 
+0

Perfect. Спасибо! Чтобы ответить на ваш вопрос - это потому, что я делаю некоторые нелепые нетрадиционные манипуляции с таблицами для кого-то, с кем я не могу спорить, и то, как я это делаю, требует, чтобы я удалял по одному за раз. (в основном, используя другой запрос для определения записи top1). Я уверен, что мы все были там. :) – David

Смежные вопросы