Это одна из странных проблем, с которыми я сталкивался в MS Access.У меня есть следующий код в непрерывной форме:
Private Sub thisForm_BeforeUpdate(Cancel As Integer)
If Not Cancel Then
Debug.Print "pre-logging data changes..."
' here we need to doublecheck to see if any values changed.
' we simply iterate through the whole list, re-setting oldValue
' and newValue.
For Each control In thisForm.Section(acDetail).controls
If control.ControlType = acTextBox Or _
control.ControlType = acComboBox Or _
control.ControlType = acListBox Or _
control.ControlType = acOptionGroup Or _
control.ControlType = acCheckBox Then
Debug.Print control.Name
oldValues(control.Name) = control.oldValue
newValues(control.Name) = control.value
End If
Next
End If
End Sub
oldValues и newValues являются объектами словаря (хотя, вероятно, не связаны с проблемой).
Моя форма имеет 3 элемента управления текстового поля ифлажок управления.Один из элементов управления текстового поля отключен и заполняется с помощью результатов простого внутреннего соединения (чтобы получить удобочитаемое имя, связанное с внешним ключом).Источник данных поступает из источника записей формы (DLookup или что-то еще не используется).
Если я отредактирую один из двух других элементов управления текстовым полем, этот код будет работать абсолютно нормально.ОДНАКО, если я переключаю флажок в форме, я получаю ошибку времени выполнения 3251. В окне часов я снова получаю сообщение об ошибке, когда пытаюсь просмотреть свойства элемента управления.Он показывает значение oldValue для отключенного элемента управления как «Reserved Error».
Если бы он делал это последовательно, я бы подумал, что это связано с отключением элемента управления;но поскольку он работает без проблем, когда другие текстовые поля получают изменения, и прерывается только при переключении флажка;Я в тупике.Я почти склонен полагать, что обнаружил ошибку в доступе, но я мог бы использовать некоторые дополнительные данные.
Кто-нибудь еще сталкивался с такой проблемой?
РЕДАКТИРОВАТЬ: При копании дальше, яобнаружил, что в действительности только одно из 3 редактируемых полей не будет вызывать эту ошибку.Содержит строковые данные.Два других элемента управления содержат значение даты и значение да / нет.Теперь я еще больше запутался.