Скажем есть временная таблица, (осколок от чего то) в ней записей скажем тыщ 5 или 10. Надо ее полностью зачистить. Для одного раза, что то писать, или создовать запрос...
Открываем таблицу руками, выделяем все записи, и клавишу "дел", тут же с сервера прилетает сообщение, записи заблокированы и не могут быть обработаны.
Тогда начинаются мучения: выделяю по 200-300 записей и по клавише "дел"
10000 записей разделить на 300 выделенных примерно получается 33 раза надо выделить и удалить
Тут надо было после очередного апгрейта таблицу привести к новому виду:
в таблице 14 с половиной тыщ записей и в поле "фирма" поставить "1" вместо NULL
На басике быстренько слепил ремонтную програмку, завел ее под кнопку.
Dim db As DAO.Database
Dim rs As DAO.Recordset
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT * FROM табОплата WHERE (((табОплата.Firma)<1)) OR (((табОплата.Firma) Is Null))")
If rs.RecordCount > 0 Then
Do Until rs.EOF
rs.Edit
rs!Firma = 1
rs.Update
rs.MoveNext
Loop
end if
Loop |
Сервер отказал в доступе в таком виде,
тогда началось шаманство:
Dim db As DAO.Database
Dim rs As DAO.Recordset
dim a as Byte
a=1
Set db = CurrentDb
do Until a=0
Set rs = db.OpenRecordset("SELECT * FROM табОплата WHERE (((табОплата.Firma)<1)) OR (((табОплата.Firma) Is Null))")
If rs.RecordCount > 0 Then
rs.Edit
rs!Firma = 1
rs.Update
set rs=Nothing
else
a=0
end if
Loop |
Беру по одной записи, вношу изменения, отключаюсь, потом снова...
через 10 мин. было обработано 500 записей!
Потом подкурутил, чтобы отключался через 100 записей, и за оставшиеся 15 мин он обработал все остальные 13500 записей.
Но это же не дело, так не должно быть!