Đây là một trong những vấn đề lạ tôi đã thấy trong MS Access. Tôi có mã sau đây ở dạng liên tục:quyền truy cập vào oldValue để kiểm soát ở dạng liên tục tạo ra lỗi 3251 trong beforeUpdate khi một hộp kiểm trên biểu mẫu được cập nhật
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 and newValues là các đối tượng từ điển (mặc dù có thể không liên quan đến vấn đề này).
Biểu mẫu của tôi có 3 điều khiển hộp văn bản và kiểm soát hộp kiểm. Một trong các điều khiển hộp văn bản bị tắt và được điền thông qua kết quả của một phép nối bên trong đơn giản (để lấy tên có thể đọc được của con người được liên kết với khóa ngoại). Nguồn dữ liệu đến từ nguồn bản ghi của biểu mẫu (không có DLookup hoặc bất kỳ thứ gì được sử dụng).
Nếu tôi chỉnh sửa một trong hai điều khiển hộp văn bản kia, mã này chạy hoàn toàn tốt. BAO GIỜ, nếu tôi chuyển đổi hộp kiểm trên biểu mẫu, tôi nhận được một lỗi thời gian chạy 3251. Trong cửa sổ đồng hồ, tôi nhận được lỗi một lần nữa khi tôi cố gắng xem các thuộc tính của "kiểm soát". Nó cho thấy giá trị của oldValue cho điều khiển bị vô hiệu hóa là "Reserved Error".
Nếu điều này xảy ra một cách nhất quán, tôi nghĩ đó là do việc kiểm soát bị vô hiệu hóa; nhưng kể từ khi nó hoạt động mà không có một vấn đề khi các hộp văn bản khác nhận được chỉnh sửa, và chỉ phá vỡ khi hộp kiểm được bật; Tôi đang bối rối. Tôi gần như có xu hướng tin rằng tôi tìm thấy một lỗi trong truy cập, nhưng tôi có thể sử dụng một số đầu vào thêm.
Bất kỳ ai khác cũng gặp phải vấn đề như thế này?
EDIT: Sau khi tìm hiểu thêm, tôi thấy rằng trong thực tế chỉ một trong 3 trường có thể chỉnh sửa sẽ không kích hoạt lỗi này. Nó chứa dữ liệu chuỗi. Hai điều khiển còn lại chứa giá trị ngày tháng và giá trị có/không. Bây giờ tôi thậm chí còn bối rối hơn.
Kiểm tra xem trường có gây ra sự cố hay không là liên kết hoặc có sự kiện 'OnUpdate' được liên kết với nó. – Newd