Есть несколько вещей, которые могут быть причиной этого. Вот один. Есть ли у вашей таблицы первичный ключ? Похоже, вы пытаетесь обновить первичный ключ до значения, которое уже существует в таблице, прежде чем изменять его. Это происходит в форме? В этом случае Access может расстроиться из-за того, что вы изменили набор записей за его спиной. me.undo()
перед внесением изменений может помочь. Также, если вы находитесь в форме, вы можете выполнить то же самое таким образом. Это немного глупо, но это простой способ.
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdCopy
DoCmd.GoToRecord , , acNewRec
DoCmd.RunCommand acCmdPaste
В качестве альтернативы я бы порекомендовал что-то подобное.
Dim sSql As String
Dim sUpdateSuffix as string
sUpdateSuffix="B2"
Const sTableName As String = "[Tote Log] "
sSql = "INSERT INTO "[Tote Log]([number],[whateverelse]) " & _
"SELECT [number]" & sUpdateSuffix & ",[whateverelse] FROM [Tote Log] WHERE Number = " & Me.tbScannerRead.Value
CurrentProject.Connection.Execute sSql
Если вы хотите построить строку sql динамически, используйте тот же метод, который вы уже использовали для циклического обхода полей и построения строки запроса.
me.requery
восстановит набор записей формы.
Надеюсь, это поможет вам