Исходя из этого примера, кажется, что между новым и старым значениями первичного ключа существует согласованная закономерность.
? "X" & Right("RS182", 3) & Left("RS182", 2)
X182RS
Если это так, то используйте серию операторов UPDATE, чтобы заменить старые значения новыми. Но сначала сделайте резервную копию вашей базы данных для безопасного хранения.
Например, если поле первичного ключа для YourTable имеет имя ID:
UPDATE YourTable
Set ID = "X" & Right(ID, 3) & Left(ID, 2);
Если YourTable включен в какие-либо определенные отношения, вам сначала нужно будет удалить эти отношения (или, по крайней мере, снять с них флажок «применять ссылочную целостность»), а затем восстановить отношения после обновления значений первичного ключа.
Кроме того, удаление свойства первичного ключа из идентификатора должно позволить выполнить обновление быстрее. Переназначить первичный ключ позже.
Поскольку у вас есть 82 таблицы, для которых требуется это преобразование, вы можете создать для этого процедуру VBA.
Public Sub ConvertPKeyValues(ByVal pTable As String, _
ByVal pField As String)
Dim db As DAO.Database
Dim strSql As String
strSql = "UPDATE [" & pTable & "]" & vbCrLf & _
"Set [" & pField & "] = 'X' & " & _
"Right([" & pField & "], 3) & " & _
"Left([" & pField & "], 2);"
Set db = CurrentDb
db.Execute strSql, dbFailOnError
Set db = Nothing
End Sub
Вызвать процедуру с каждым именем таблицы и именем соответствующего поля в этой таблице. Вы также должны добавить обработчик ошибок для любых проблем, которые выставляет dbFailOnError.