Giải pháp tốt nhất là để hạn chế tài liệu tham khảo trong Access MDB của bạn với các thành phần truy cập nội bộ. Đây sẽ là tham chiếu Access, tham chiếu VBA và tham chiếu DAO. Tất cả các thư viện bên ngoài khác nên được sử dụng thông qua ràng buộc muộn. Nếu bạn đang sử dụng Object File System, ví dụ, thay vì điều này (với một tham chiếu đến Windows Script Host Object Model):
Dim objFSO As New FileSystemObject
If objFSO.FolderExists("\\d9m09521\WB\") Then
...
End If
bạn sẽ loại bỏ các tài liệu tham khảo và chuyển nó sang này:
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists("\\d9m09521\WB\") Then
...
End If
Nếu bạn lo lắng về việc đạt hiệu suất khi khởi chạy FSO mỗi khi bạn sử dụng nó, bạn có thể lưu vào bộ nhớ cache tham chiếu đến FSO. Tôi thường sử dụng một biến tĩnh bên trong một hàm trả về một đối tượng như thế này:
Public Function FSO() As Object
Static objFSO As Object
If objFSO Is Nothing Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
End If
FSO = objFSO
End Function
Bây giờ, bạn có thể muốn nhận được ưa thích và cũng có thể để hạ bệ đối tượng được thuyết minh, trong trường hợp bạn muốn làm điều gì đó như thế này:
Public Function FSO(Optional bolCloseObject As Boolean = False) As Object
Static objFSO As Object
If bolCloseObject Then
Set objFSO = Nothing
Exit Function
End If
If objFSO Is Nothing Then
Set objFSO = CreateObject("Scripting.FileSystemObject")
End If
FSO = objFSO
End Function
Trong mọi trường hợp, toàn bộ ràng buộc muộn sẽ giải quyết vị trí của thư viện bên ngoài trong thời gian chạy và do đó không cài đặt hoặc đăng ký không đúng cách. Với sự ràng buộc trễ, bạn có thể bẫy cả hai điều kiện đó, nhưng với sự ràng buộc sớm, toàn bộ ứng dụng Access của bạn chỉ đơn giản là phá vỡ.
Nguồn
2009-02-27 22:29:32
Tôi gặp lỗi khi triển khai logic này. như follwos: "Tham chiếu đối tượng không được đặt thành thể hiện của đối tượng" Vui lòng đề xuất cách thực hiện ..... Cảm ơn bạn ... – Suman
Dòng nào đưa ra lỗi này? – Fionnuala
Trên "Dim ref As References" nhận được lỗi như trên và trong loại thứ hai khai báo tức là như dưới đây Dim ref như mới Tham khảo lỗi là "Lấy nhà máy COM class cho thành phần với CLSID {EB106214-9C89-11CF-A2B3-00A0C90542FF } không thành công do lỗi sau: 80040154." – Suman