sql >> Database >  >> RDS >> Access

Toegang tot foutnummer bericht opzoeken

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.

Artikelen waarnaar verwezen wordt

Fouten weggooien in VBA Introductie van een wrijvingsloos alternatief voor Err.Raise. Mike Wolfe niet langer ingesteld
  1. MariaDB – MySQL – Toon motoren om alle beschikbare en ondersteunde motoren weer te geven

  2. Eenvoudige recursieve query in Oracle

  3. De Oracle Warehouse Builder 11g R2-client installeren

  4. mysqli:kan het meerdere queries in één statement voorbereiden?