доступ к oldValue для управления в непрерывной форме приводит к ошибке 3251 в beforeUpdate при обновлении флажка в форме

Это одна из странных проблем, которые я видел в 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 ​​являются объектами Dictionary (хотя, вероятно, не имеет отношения к проблеме).

Моя форма имеет 3 элемента управления текстовым полем и элемент управления флажком. Один из элементов управления текстовым полем отключен и заполняется с помощью результатов простого внутреннего соединения (для получения связанного с ним удобочитаемого имени с внешним ключом). Источник данных поступает из источника записей формы (ни DLookup, ни что-либо еще не используется).

Если я редактирую один из двух других элементов управления текстовым полем, этот код работает абсолютно нормально. ОДНАКО, если я переключу флажок в форме я получаю ошибку времени выполнения 3251. В окне часов я снова получаю сообщение об ошибке, когда пытаюсь просмотреть свойства «элемента управления». Он показывает значение oldValue для отключенного элемента управления как «Зарезервированная ошибка».

Если бы он делал это постоянно, я бы подумал, что это связано с отключением элемента управления; но поскольку он работает с устранить проблему, когда другие текстовые поля получают правки, и ломаются только при переключении флажка; Я в тупике. Я почти склонен полагать, что обнаружил ошибку в доступе, но я мог бы использовать дополнительные данные.

Кто-нибудь еще сталкивался с подобной проблемой?

РЕДАКТИРОВАТЬ: При дальнейшем копании я обнаружил, что на самом деле только одно из 3 редактируемых полей не вызовет эту ошибку. Он содержит строковые данные. Два других элемента управления содержат значение даты и значение «да / нет». Теперь я еще больше запутался.

6
задан dmarra 13 January 2012 в 22:12
поделиться