Har du någonsin haft ett Access-felnummer, men inte felmeddelandet som förklarar vad det är?
AccessError()
funktion är ett snabbt sätt att få felmeddelandet som är kopplat till ett Access-felnummer:
The Pipe Placeholder Character
Pipetecknet (|
) är en vertikal stapel (tillgänglig via [Shift] + [\] {omvänt snedstreck} på ett engelskt tangentbord).
AccessError-funktionen använder detta tecken som en platshållare för instansspecifik text i ett felmeddelande.
Till exempel är Access Error 3211 "...kunde inte låsa tabellen '|' ..." Rörtecknet i det allmänna meddelandet ersätts med den faktiska strängen som användes i kodraden som gav felmeddelandet:
Officiell dokumentation
AccessError-funktionen är faktiskt en metod för Access.Application-objektet. Här är en beskrivning av vad den gör från den officiella dokumentationen:
Du kan använda AccessError metod för att returnera den beskrivande strängen associerad med ett Microsoft Access- eller Data Access Objects-fel (DAO).
Det är värt att notera att detta är en Microsoft Åtkomstspecifik fungera. Med andra ord, du skulle inte kunna anropa det från ett annat Office-program, som Excel eller Word.*
(* Detta är inte tekniskt sant. Du kan skapa ett Access Application-objekt via COM i vilken VBA-miljö som helst och sedan kunna anropa AccessError-metoden från det objektet. Naturligtvis skulle det bara vara användbart om du vill kontrollera Åtkomstspecifika felmeddelandesträngar i det andra Office-programmet, vilket verkar osannolikt.)
Användningsfall
Ärligt talat kan jag aldrig komma ihåg att jag använde den här metoden i min applikationskod.
Det här är en funktion som jag nästan uteslutande använder från det direkta fönstret när jag bara vill ha ett snabbt sätt att avgöra vad ett Access-felnummer representerar.
Detta skulle vara mest användbart om du stötte på en felhanterare som hade en Select Case Err.Number
block och alla enskilda Case
uttalanden använde siffror utan åtföljande kommentarer, så här:
Select Case Err.Number
Case 2452
'Do something
Case 2455
'Do a different thing
Case 2467
'Do something else
End Select
Med AccessError-metoden kan du förbättra den här koden genom att lägga till en kommentar med en kort beskrivning av varje felnummer:
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
Attraktioner vid integrering av feldatabas
Om du använder en feldatabas – som FogBugz – som erbjuder en funktion för att gruppera fel baserat på deras beskrivning, kanske du vill använda den generiska felmeddelande i ämnet för felrapporten (eller vilket fält grupperingen än gör) och fånga den specifika felmeddelande i bugghändelsens detaljfält.
Jag diskuterar det här problemet i samband med min anpassade felsökningsfunktion här:Throwing Errors in VBA:Bug Database Integration Issues.