Heb je ooit een Access-foutnummer gehad, maar niet de foutmelding die uitlegt wat het is?
De AccessError()
functie is een snelle manier om de foutmelding te krijgen die is gekoppeld aan een toegangsfoutnummer:
Het Pipe Placeholder-teken
Het pijpteken (|
) is een verticale balk (beschikbaar via [Shift] + [\] {backslash} op een Engels toetsenbord).
De AccessError-functie gebruikt dit teken als een plaatsaanduiding voor instantiespecifieke tekst in een foutmelding.
Toegangsfout 3211 is bijvoorbeeld "... kon tabel niet vergrendelen '|' ..." Het pipe-teken in het algemene bericht wordt vervangen door de daadwerkelijke tekenreeks die werd gebruikt in de coderegel die het foutbericht veroorzaakte:
Officiële documentatie
De AccessError-functie is eigenlijk een methode van het Access.Application-object. Hier is een beschrijving van wat het doet uit de officiële documentatie:
U kunt de AccessError . gebruiken methode om de beschrijvende tekenreeks te retourneren die is gekoppeld aan een Microsoft Access- of Data Access Objects-fout (DAO).
Het is vermeldenswaard dat dit een Microsoft . is Toegangsspecifiek functie. Met andere woorden, u zou het niet kunnen oproepen vanuit een andere Office-toepassing, zoals Excel of Word.*
(* Dit is technisch niet waar. U kunt een Access Application-object maken via COM in elke VBA-omgeving en vervolgens de AccessError-methode vanuit dat object kunnen aanroepen. Dat zou natuurlijk alleen nuttig zijn als u dit wilt controleren Toegangsspecifieke foutberichtreeksen in die andere Office-toepassing, wat onwaarschijnlijk lijkt.)
Gebruiksvoorbeelden
Eerlijk gezegd kan ik me niet herinneren dat ik deze methode ooit in mijn applicatiecode heb gebruikt.
Dit is een functie die ik bijna uitsluitend gebruik vanuit het directe venster als ik een snelle manier wil om te bepalen wat een toegangsfoutnummer vertegenwoordigt.
Dit zou het handigst zijn als u een foutafhandelaar tegenkomt met een Select Case Err.Number
blok en alle individuele Case
uitspraken gebruikten nummers zonder begeleidende opmerkingen, zoals deze:
Select Case Err.Number
Case 2452
'Do something
Case 2455
'Do a different thing
Case 2467
'Do something else
End Select
Gewapend met de AccessError-methode, zou je deze code kunnen verbeteren door een opmerking toe te voegen met een korte beschrijving van elk foutnummer:
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
Overwegingen bij de integratie van bugdatabases
Als u een bugdatabase gebruikt, zoals FogBugz, die een functie biedt om fouten te groeperen op basis van hun beschrijving, wilt u misschien de algemene gebruiken foutmelding in het onderwerp van het bugrapport (of welk veld dan ook voor de groepering) en leg de specifieke vast foutmelding in het detailveld van de buggebeurtenis.
Ik bespreek dit probleem in de context van mijn aangepaste foutwerpfunctie hier:Throwing Errors in VBA:Bug Database Integration Issues.