Najlepszym rozwiązaniem jest ograniczenie odwołań w Access MDB dostępu do komponentów wewnętrznych. Byłby to odnośnik Access, referencja VBA i referencja DAO. Wszystkie inne biblioteki zewnętrzne powinny być używane poprzez późniejsze wiązanie. Jeśli używasz obiektu systemu plików, na przykład, zamiast tego (z odniesieniem do Windows Script Host Object Model):
Dim objFSO As New FileSystemObject
If objFSO.FolderExists("\\d9m09521\WB\") Then
...
End If
chcesz usunąć odwołanie i przekształcić ją w ten sposób:
Dim objFSO As Object
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists("\\d9m09521\WB\") Then
...
End If
Jeśli niepokoi Cię wydajność podczas inicjowania FSO za każdym razem, gdy go używasz, możesz zapisać w pamięci podręcznej odniesienie do niego. I zazwyczaj użyć zmiennej statycznej wewnątrz funkcji, aby powrócić do obiektu tak:
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
Teraz możesz uzyskać fantazyjne, a także być w stanie zburzyć instancja obiektu, w tym przypadku, że zrobisz coś tak:
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
w każdym razie chodzi o to, że późne wiązanie postanawia lokalizację zewnętrznych bibliotek w czasie wykonywania, a tym samym nie złamie, chyba że poza biblioteka nie jest zainstalowana lub nie jest prawidłowo zarejestrowane. Z późnym wiązaniem możesz pułapkę dla obu tych warunków, ale z wczesnym wiązaniem, cała Twoja aplikacja Access po prostu pęka.
Otrzymuję błąd podczas implementowania tej logiki. as follwos: "Odwołanie do obiektu nie jest ustawione na wystąpienie obiektu" Proszę zasugerować, jak to zrobić ..... Dziękuję ... – Suman
Która linia podaje ten błąd? – Fionnuala
W "Dim ref As References" pojawia się błąd jak wyżej iw drugim typie deklaracji, tj. Poniżej Dim ref as new References error is "Pobieranie fabryki klasy COM dla komponentu z CLSID {EB106214-9C89-11CF-A2B3-00A0C90542FF } nie powiodło się z powodu następującego błędu: 80040154." – Suman