2009-02-27 23 views
7

Ứng dụng của tôi được xây dựng để quét cơ sở dữ liệu MS Access trong VB.NET.Làm cách nào để thêm/xóa tham chiếu theo chương trình?

Khi ứng dụng Access được phân phối cho người dùng cuối, họ có thể có các phiên bản khác nhau của thành phần COM. Có thể thêm/xóa tham chiếu theo chương trình để giải quyết các tham chiếu bị hỏng do các phiên bản khác nhau không?

Vui lòng chia sẻ mã hoặc liên kết để tham khảo.

Trả lời

9

Dưới đây là một số mẫu mã:

Tạo tham khảo từ File

Sub AddWS() 
    'Create a reference to Windows Script Host, ' 
    'where you will find FileSystemObject ' 
    'Reference name: "IWshRuntimeLibrary" ' 
    'Reference Name in references list: "Windows Script Host Object Model" ' 
    ReferenceFromFile "C:\WINDOWS\System32\wshom.ocx" 
    End Sub 

    Function ReferenceFromFile(strFileName As String) As Boolean 
    Dim ref As Reference 

     On Error GoTo Error_ReferenceFromFile 
     References.AddFromFile (strFileName) 
     ReferenceFromFile = True 

    Exit_ReferenceFromFile: 
     Exit Function 

    Error_ReferenceFromFile: 
     ReferenceFromFile = False 
     Resume Exit_ReferenceFromFile 
    End Function 

Xóa Reference

Sub DeleteRef(RefName) 
    Dim ref As Reference 

     'You need a reference to remove ' 
     Set ref = References(RefName) 
     References.Remove ref 

    End Sub 


You can use the references collection to find if a reference exists. 

Reference Tồn tại

Function RefExists(RefName) 
    Dim ref As Object 

    RefExists = False 

    For Each ref In References 
     If ref.Name = RefName Then 
      RefExists = True 
     End If 
    Next 

    End Function 

Từ: http://wiki.lessthandot.com/index.php/Add,_Remove,_Check_References

Bạn cũng có thể muốn đọchttp://www.mvps.org/access/modules/mdl0022.htm

+1

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

+0

Dòng nào đưa ra lỗi này? – Fionnuala

+0

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

3

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ỡ.

Các vấn đề liên quan