sql >> Databasteknik >  >> RDS >> Access

Öppna felnummermeddelandesökning

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.

Refererade artiklar

Kasta fel i VBAIntroducerar ett friktionsfritt alternativ till Err.Raise. Inte längre inställd Mike Wolfe
  1. PL/SQL otillräckliga privilegier inom en fråga manuellt möjligt

  2. SQL Server Infoga Exempel

  3. Skicka och returnera anpassade arrayobjekt i ibatis och oracle i java

  4. Neo4j - Skapa en begränsning med Cypher