MS Access VBA улучшить скрипт - PullRequest
0 голосов
/ 03 мая 2018

У меня есть этот код в MS Access (я сделал это в VBA, потому что я не нашел способ создать процедуру в Access). То, что он делает, это просто, он принимает поле из таблицы и заменяет значение в другой таблице, где идентификатор такой же.

Как я могу получить это быстрее? В настоящее время это занимает более или менее 8 минут, чтобы сделать это (процессор всегда меньше 20%, поэтому речь идет не о мощности процессора).

Set rst = CurrentDb.OpenRecordset("Tab_personal_2")

 rst.MoveFirst

 DoCmd.SetWarnings False

 Do Until rst.EOF
    DoCmd.RunSQL ("UPDATE Tab_personal_3 SET RFC = '" & rst("RFC") & "' WHERE Id = " & rst("Id"))
    rst.MoveNext

 Loop

Ответы [ 2 ]

0 голосов
/ 03 мая 2018

Я считаю, что один запрос на обновление будет работать, если таблицы разделяют поле идентификатора:

UPDATE Tab_personal_3 INNER JOIN Tab_personal_2 ON Tab_personal_3.ageing_collection = Tab_personal_2.Id SET Tab_personal_3.RFC = Tab_personal_2.RFC;
0 голосов
/ 03 мая 2018

Вы должны быть в состоянии сделать это в одном запросе:

UPDATE Tab_personal_3 t3
INNER JOIN Tab_personal_2 t2 ON t2.ID = t3.ID
SET t3.RFC = t2.RFC

Конечно, вы можете выполнить этот запрос через VBA, если хотите. Но сохранение запроса позволяет Access сохранять план выполнения и увеличивать скорость выполнения запроса.

...