Czy kiedykolwiek miałeś numer błędu programu Access, ale nie komunikat o błędzie wyjaśniający, co to jest?
AccessError()
funkcja to szybki sposób na uzyskanie komunikatu o błędzie związanego z numerem błędu dostępu:
Znak zastępczy rury
Znak potoku (|
) to pionowa kreska (dostępna przez [Shift] + [\] {backslash} na angielskiej klawiaturze).
Funkcja AccessError używa tego znaku jako symbolu zastępczego dla tekstu specyficznego dla instancji w komunikacie o błędzie.
Na przykład błąd dostępu 3211 to „... nie można zablokować tabeli '|' ...” Znak potoku w ogólnej wiadomości jest zastępowany rzeczywistym ciągiem używanym w wierszu kodu, który spowodował wyświetlenie komunikatu o błędzie:
Oficjalna dokumentacja
Funkcja AccessError jest w rzeczywistości metodą obiektu Access.Application. Oto opis tego, co robi z oficjalnej dokumentacji:
Możesz użyć AccessError metoda zwracająca opisowy ciąg skojarzony z błędem Microsoft Access lub Data Access Objects (DAO).
Warto zauważyć, że jest to Microsoft Zależne od dostępu funkcjonować. Innymi słowy, nie będziesz w stanie wywołać go z innej aplikacji pakietu Office, takiej jak Excel lub Word.*
(* To nie jest technicznie prawda. Możesz utworzyć obiekt aplikacji Access przez COM w dowolnym środowisku VBA, a następnie móc wywołać metodę AccessError z tego obiektu. Oczywiście byłoby to przydatne tylko wtedy, gdy chcesz sprawdzić Komunikaty o błędach specyficzne dla dostępu w tej innej aplikacji pakietu Office, co wydaje się mało prawdopodobne).
Przypadki użycia
Szczerze mówiąc, nie pamiętam, abym kiedykolwiek używał tej metody w kodzie mojej aplikacji.
Jest to funkcja, której używam prawie wyłącznie z okna bezpośredniego, gdy chcę tylko szybkiego sposobu określenia, co oznacza numer błędu programu Access.
Byłoby to najbardziej przydatne, gdybyś natknął się na moduł obsługi błędów, który miał Select Case Err.Number
blok i wszystkie indywidualne Case
w stwierdzeniach użyto liczb bez towarzyszących komentarzy, na przykład:
Select Case Err.Number
Case 2452
'Do something
Case 2455
'Do a different thing
Case 2467
'Do something else
End Select
Uzbrojony w metodę AccessError, możesz poprawić ten kod, dodając komentarz z krótkim opisem każdego numeru błędu:
Select Case Err.Number
Case 2452 'invalid reference to the Parent property
'Do something
Case 2455 'invalid reference to the property
'Do a different thing
Case 2467 'expr refers to object that is closed or doesn't exist
'Do something else
End Select
Uwagi dotyczące integracji bazy danych błędów
Jeśli używasz bazy danych błędów, takiej jak FogBugz, która oferuje funkcję grupowania błędów na podstawie ich opisu, możesz użyć ogólnego komunikat o błędzie w temacie zgłoszenia błędu (lub w jakimkolwiek polu grupującym) i przechwyć konkretne komunikat o błędzie w polu szczegółów zdarzenia błędu.
Omawiam ten problem w kontekście mojej niestandardowej funkcji zgłaszania błędów tutaj:Throwing Errors in VBA:Bug Database Integration Issues.